Node.js
-
노드 next 활용Node.js 2023. 4. 17. 17:21
I. next next 를 호출해야 다음 코드로 넘어감 - next를 주석 처리하면 응답이 전송되지 않음 - 다음 미들웨어(라우터 미들웨어) 로 넘어가지 않기 때문 - next에 인수로 값을 넣으면 에러 핸들러로 넘어감('route' 인 경우 다음 라우터로) II. 같은 요청 url 을 가진 라우터가 2개가 있을 때 // app.js 중에서 app.get('/', (req, res, next) => { res.sendFile(path.join(__dirname, '/index.html')); next('route'); }, (req, res) => { console.log('실행됩니까?'); }); app.get('/', (req, res) => { console.log('이게 실행되지롱'); }); 위..
-
노드 미들웨어의 특성Node.js 2023. 4. 17. 16:17
I. 미들웨어 장착 // app.js const express = require('express'); const path = require('path'); const app = express(); app.set('port', process.env.PORT || 3000); app.use((req, res, next) => { console.log('모든 요청에 실행할거임!'); next(); }); app.get('/', (req, res) => { res.sendFile(path.join(__dirname, '/index.html')); }); app.post('/about', (req, res) => { res.send('hello / express!'); }); app.get('/category/J..
-
노드 미들웨어, 라우터Node.js 2023. 4. 17. 15:41
I. 미들웨어란? //app.js const express = require('express'); const path = require('path'); const app = express(); app.set('port', process.env.PORT || 3000); app.get('/', (req, res) => { console.log('모든 요청에 실행할거임!'); res.sendFile(path.join(__dirname, '/index.html')); }); app.post('/', (req, res) => { console.log('모든 요청에 실행할거임!'); res.send('hello / express!'); }); app.get('/about', (req, res) => { conso..
-
4-3. 노드 npm 명령어들 알아보기Node.js 2023. 4. 14. 16:14
I. 기타 명령어 - npm outdated : 어떤 패키지에 기능 변화가 생겼는지 알 수 있음 - npm uninstall 패키지명 : 패키지 삭제(npm rm 패키지명으로도 가능) - npm search 검색어 : npm 패키지를 검색할 수 있음(npmjs.com 에서도 가능) - npm info 패키지명 : 패키지의 세부 정보 파악 가능 - npm adduser : npm 에 로그인을 하기 위한 명령어(npmjs.com 에서 회원가입) - npm whoami : 현재 사용자가 누구인지 알려줌 - npm logout : 로그인한 계정을 로그아웃 - npm version 버전 : package.json 의 버전을 올림 - npm deprecate [패키지명][버전] [메세지] : 패키지를 설치할 때 경..
-
4-2. 노드 node_modules 와 npx, SemVerNode.js 2023. 4. 14. 15:58
I. node_modules (지난 게시글과 이어짐!!) 1. npm i 로 필요한 패키지를 다운받게 되면, package-lock.json과 node_modules 가 같이 따라온다. - node_modules 는 우리가 지난 게시글에서 다운받은 패키지들이다. - package-lock.json 도 생성되어 패키지 간 의존 관계를 명확히 한다. ✨여기서 드는 의문점!! 우리는 분명 4개의 패키지만 다운받았었다. 하지만 node_modules에는 왜이렇게 많이 들어있는 것일까? 예를 들어, 우리는 express 라는 패키지를 다운 받은 적이 있는데, 다운받을 때, 아래와 같이 express 패키지가 가지고 있는 dependencies 들이 같이 따라오기 때문에 이렇게나 많은 것이다. 따라서, 우리는 4개..
-
4-1. 노드 package.jsonNode.js 2023. 4. 14. 14:34
I. npm 이란? Node Package Manager - 노드의 패키지 매니저 - 다른 사람들이 만든 소스 코드들을 모아둔 저장소 - 남의 코드를 사용하여 프로그래밍 가능 - 이미 있는 기능을 다시 구현할 필요가 없어 효율적 - 오픈 소스 생태계를 구성중 - 패키지 : npm 에 업로드된 노드 모듈 - 모듈이 다른 모듈을 사용할 수 있듯이, 패키지도 다른 패키지를 사용할 수 있음 - 의존 관계라고 부름 II. package.json 1. 현재 프로젝트에 대한 정보와 사용중인 패키지에 대한 정보를 담은 파일 - 같은 패키지라도 버전별로 기능이 다를 수 있으므로 버전을 기록해두어야 함 - 동일한 버전을 설치하지 않으면 문제가 생길 수 있음 - 노드 프로젝트 시작 전 package.json 부터 만들고 시..
-
3-8. 노드 clusterNode.js 2023. 4. 14. 12:27
I. cluster 란? 기본적으로 싱글 스레드인 노드가 CPU 코어를 모두 사용할 수 있게 해주는 모듈 - http2 를 적용하면서 같이 적용하면 좋음 - 포트를 공유하는 노드 프로세스를 여러 개 둘 수 있음 - 요청이 많이 들어왔을 때 병렬로 실행된 서버의 개수만큼 요청이 분산됨 - 서버에 무리가 덜 감 - 코어가 8개인 서버가 있을 때 : 보통은 코어 하나만 활용 - cluster로 코어 하나당 노드 프로세스 하나를 배정 가능 - 성능이 8배가 되는 것은 아니지만 개선됨 - 단점 : 컴퓨터 자원(메모리, 세션 등)을 공유 못 함 - Redis(메모리 서버) 등 별도 서버로 해결 II. 서버 클러스터링 마스터 프로세스와 워커 프로세스 - 마스터 프로세스는 CPU 개수만큼 워커 프로세스를 만듦( wor..
-
3-7. 노드 https 와 http2Node.js 2023. 4. 14. 12:01
I. https 웹 서버에 SSL 암호화를 추가하는 모듈 - 오고 가는 데이터를 암호화해서 중간에 다른 사람이 요청을 가로채더라도 내용을 확인할 수 없음 - 요즘엔 https 적용이 필수 ✨SSL 이란? - 인터넷 통신의 개인정보 보호, 인증, 데이터 무결성을 보장하기 위해 만들어진 암호화 기반 인터넷 보안 프로토콜 // server.js const http = require('http'); http.createServer((req, res) => { res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' }); res.write('Hello Node!'); res.end('Hello Server!'); }) .listen(8080, () => ..