프레임워크/Express 12

[2차 정리]passport

passport는 내부적으로 쿠키와 세션을 사용해서 Node.js에서 인증(Authenciate)을 쉽게 적용할 수 있는 미들웨어 입니다. npm의 passport는 클라이언트가 서버에 요청을 보낼 수 있는 지 심사하는 역할을 합니다. passport는 전략(strategy)라는 인증 전략을 사용하는데, 하나의 플러그인 입니다. 약 500가지 방법의 전략이 공식 홈페이지에 있습니다. Strategy: 전략 어떤 것을 이용해, 어떻게 인증을 구현할 것인가에 대한 전략 예를 들어서 ‘passport-kakao’를 사용한다면, 카카오톡 계정을 통해서 인증을 수행하는 것입니다. 소셜 로그인 외에도 OpenID, Heroku, HTTP Bearer를 사용해서 인증하는 방법 등 다양한 방법이 존재합니다. 서비스의 ..

[2차 정리]템플릿 엔진

정적파일, 동적 파일 정적 파일과 동적 파일의 큰 차이점은 프로그래밍적으로 웹 페이지가 만들어졌는냐의 여부 입니다. HTML, CSS, JS 파일과 같이 한번 만들어진 자원이 언제나 똑같이 보이는 리소스를 ‘정적파일’ 이라고 합니다. ‘동적파일’은 사용자와 서버가 상호작용하며 페이지 내용의 일부 혹은 전부가 그때그때 생성되는 파일 입니다. 정적 파일(static file) 장점 HTML 파일 적성이 편하다 서버를 재시작 하지 않아도 바로 반영할 수 있다. 라우터 설정을 하지 않아도 자동으로 설정된다. 단점 프로그래밍적인 요소를 사용할 수 없으므로 반복되는 HTML코드 작성을 피하기 힘들다 동적 파일(dynamic file) 장점 프로그래밍적인 요소를 사용하여 코드를 줄일 수 있다. 클라이언트와 서버와의 ..

[2차 정리]node.js 웹소켓

HTTP와 AJAX HTTP는 Hyper Test Transfer Protocol의 약자로 오늘날 통신에 가장 널리 사용되고 있는 일종의 약속이자 형식입니다. URL과 Header 같은 부가 정보를 포함하여 사용자가 원하는 데이터를 정확히 주고 받을 수 있도록 해줍니다. HTTP통신은 클라이언트 요청 한번에 응답 한 번을 보내고 통신을 끝내게 됩니다. 따라서 페이지의 일부분만 갱신하고 싶어도 응달을 다시 보내야 합니다. AJAX는 Asynchronous JavaScript XML 의 약자로 XMLHttpRequest 라는 자바스크립트 객체를 이용해 서버와 비동기 방식으로 통신하여 DOM을 조작해 문서의 일부분만 갱신하는 것을 가능하게 합니다. AJAX는 페이지의 일부분만 동적으로 생성하기 때문에 페이지 ..

[2차 정리]node.js 통신 구현

API: Application Programming Interface 인터페이스는 서로 다른 두 가지 사이에 소통을 할 수 있게 해주는 접점을 의미합니다. 여기서 서로 다른 두 가지는 사람과 사람, 장치와 사람, 시스템과 장치 등이 될 수 있습니다. 즉 API는 응용프로그램 사이의 소통 방법입니다. Open API: request node서버가 클라이언트가 되어 서버에 요청을 보내는 경우 http 통신이 필요합니다. http 통신은 클라이언트의 요청(request)이 있을 때만 서버가 응답(response)을 보내 요청한 데이터를 전송하고 곧 바로 연결을 종료하는 방식입니다. 다른 서비스의 API요청을 위해서는 request, axios 등의 http 통신 라이브러리가 필요합니다. Open API: ax..

[2차 정리]node.js로 서버 제작시 필요한 상식

모듈 시스템 프로그램 내부를 기능별 단위로 분할한 부분. 또는 메모리 보드 등의 부품을 간단하게 떼서 교환이 쉽도록 설계되어 있을 때의 그 각 구성원 모듈은 부품 같은 역할을 하므로 여러 부품을 조립해서 하나의 프로그램을 만듭니다. 어떤 프로그램을 만들지 몰라도 웹 서비스에서 필요한 공통 기능이 있습니다. 회원가입, 게시판 같은 기능이고, 이 기능을 미리 모듈로 만들어 놓으면 여러 홈페이지를 만들 때도 사용할 수 있습니다. 이렇게 기능 단위로 분리하고 기능을 이루는 코드를 모아서 캡슐화해 놓은 것을 ‘모듈’이라고 합니다. 모듈은 애플리케이션을 구성하고 애플리케이션을 이루는 기본 단위가 됩니다. 모듈을 사용하는 모듈 시스템을 도입하면 미리 만들어진 모듈을 이리저리 조립해서 내가 원하는 다양한 형태의 웹을 ..

[1차 정리]node.js 프로젝트 제작 시 각 파일의 역할

미들웨어 const express = require('express'); const morgan = require('morgan'); const cookieParser = require('cookie-parser'); const session = require('express-session'); const dotenv = require('dotenv'); const path = require('path'); dotenv.config(); const app = express(); app.set('port', process.env.PORT || 3000); app.use(morgan('dev')); app.use('/', express.static(path.join(__dirname, 'public')));..

[1차 정리]프로젝트 시작 전 기본 상식(서버 제작, rest, cookie, https, cluster)

기본적인 서버 제작 방법 req.writeHead는 응답에 대한 정보를 기록하는 메서드 req.write 메서드는 첫 번째 인수를 클라이언트로 보낼 데이터 req.end는 응답을 종료하는 메서드 const http=require('http'); http.createServer((req,res)=>{ res.writeHead(20,{'content-type':'text/html;charset=utf-8'}); res.write('hello'); res.end('hello';); }) .listen(8080,()=> console.log('waiting 8080'); }); REST REpresentational State Transfer의 약자. 서버의 자원을 정의하고 자원에 대한 주소를 지정하는 방법을 ..

[1차 정리]템플릿 설명: nunjucks

nunjucks npm i nunjucks //app.js const nunjucks=require('numjucks'); //선언해야 사용 가능 nunjucks.configure('views',{ express:app, watch:true, }); {{title}} welcome to {{title}} 전송 //html express welcome to express 전송 내부 변수 {%set ndoe='node.js%} {%set js='jaavascript %} {{node}}와 {{js}} node.js와 javascript {{'이스케이프'}} {{'이스케이프하지 않음'|safe}} //html 이스케이프 이스케이프 하지 않음 반복문 {%set fruits=['사과..

[1차 정리]템플릿 엔진 설명: pug

pug npm i pug //app.js app.set('views'.path.join(__dirname,'views')); app.set('view engine',pug); //선언해야 사용 가능 //pug doctype html html head title=title link(rel='stylesheet', href='/stylesheets/style.css') //html 기존 html과 다르게 화살괄호() 가 존재하지 않음. 따라서 탭 또는 스페이스만으로 태그의 부모와 자식 관계를 규명함 (유사 파이썬) 속성 중 아이디와 클래스가 있는 경우 //pug #login=buttion .post-image span#highlight p.hidden.full //html div 클래스의 경우 div문자는 ..

[1차 정리]에러 유형

node : command not found ⇒ 환경변수가 제대로 설정되지 않았을 때 ReferenceError : 모듈 is not defind ⇒ 모듈을 require 했는지 확인 Error : Cannot find moudle 모듈명 ⇒ 해당 모듈을 require 했지만 설치하지 않음. npm i 로 설치할 것 Error : Can’t set headers after they are sent ⇒요청에 대한 응답을 보낼 때 응답을 두번 이상 보냄. 요청에 대한 응답은 한 번만 보내야 함. FATAL ERROR : CALL_AND_RETRY_LAST Allocation failed = JavaScript heap out of memory ⇒ 코드가 실행 할 때 메모리가 부족해서 작동하지 않음. 코드가 ..