본문 바로가기

Nodejs29

[node.js] TDD 라이브러리 - mocha, assert, should, supertest [TDD : Test Driven Develop]- 테스트 주도 개발 : 처음부터 모든 기능을 개발하기보다 테스트 코드를 먼저 개발하고 테스트 한 뒤 개발- 테스트 해보고 원하는 결과값이 나오는지 확인하고!- 유지 보수할 때 좋다함 : 느껴봐야지 [nodejs에서 TDD]- mocha, should, superTest 라이브러리를 사용함 1) mocha : 테스트 코드 작성 후 실행 해보는 테스트 러너, 테스트 베이스를 만들기 쉬움, 테스트 결과를 알기쉽게 보여줌- 공식페이지 : https://mochajs.org/- 테스트 수트와 테스트 케이스로 이뤄져있음- 테스트 수트 : 테스트 환경을 말함, describe() 로 구현- 테스트 케이스 : 테스트(테스트 코드 생성)를 말함, it() 로 구현 (1).. 2017. 6. 12.
[프로그래밍 기초] 자바스크립트 런타임, 코어와 쓰레드 [런타임이란]- 프로그래밍 언어가 구동되고 있는 환경- 자바스크립트 런타임1) 웹브라우저 : 웹 자원에 접근하기위한 클라이언트 사이드 계층 구조(런타임)2) node.js : 자바스크립트 런타임, V8엔진 등장(속도 향상, 크롬 브라우저의 V8 기반 nodejs를 특정 모듈을 사용해 웹서버 구축) - 이벤트 기반 비동기 I/O 처리 서버=> 클라이언트 요청을 이벤트로 처리 : 이벤트 큐 -> 이벤트 루프 -> 응답=> 이벤트 루프(싱글쓰레드)가 큐에 담긴 이벤트 처리 후 응답, 긴 I/O 경우 별도 쓰레드풀(worker)에서 처리 후 큐에 리턴, 루프 처리 - 런타임 구성 : 런타임 라이브러리 / 런타임 환경으로 구성됨1) 런타임 라이브러리 : 프로그램(js)을 관리하기위한 특정 컴파일러, 가상머신이 사.. 2017. 6. 12.
[node.js] express로 REST API 서버 개발 [REST API 서버]- 자원에 대한 처리 관점으로 요청 - 응답 API 서버 만듬- 자원에 식별번호 부여- 자원에 대한 처리 : CRUD(HTTP 메서드), HTTP 사용 극대화 [HTTP 메서드]1) GET : 자원 조회2) POST: 자원 생성3) PUT: 자원 갱신4) DELETE: 자원 삭제 - express 어플리케이션 메서드로 구현되어있음 [HTTP 상태코드]- 1xx : 처리 중- 2xx : 성공(200, get/put), 작성됨(201, post), 내용 없음(204, delete)- 4xx : 잘못된 요청(400), 권한 없음(401), 잘못된 요청(404), 충돌(409)- 5xx : 서버 에러(500) [요청 URI 디자인 - 라우팅]- 서버 컴퓨터의 파일 디렉토리를 지칭하는 것이.. 2017. 6. 9.
[node.js] npm, package.json 제대로 알고 가기 [npm]- node package manager : 모듈 관리(설치, 업데이트, 삭제 등)하기위한 매니저 - npm으로 외부 모듈 설치 : node_modules 디렉토리에 저장, 우리가 설치한 외부 모듈이 의존 모듈까지 같이 설치함- node_modules는 따로 git 버젼 관리하지않음 : index.js 만 있으면 바로 실행 x, 사용하는 모듈 설치해야함- 요즘엔 페이스북에서 만든 yarn 이라는 패키지 매니저도 있음 : https://yarnpkg.com/lang/en/ [npm, package.json으로 쉽게 모듈 설치하기]1) npm init : package.json 생성 - 프로젝트 의존 모듈 관리(사용 모듈 네임, 버젼), 프로젝트 정보2) npm install 모듈명 --save :.. 2017. 6. 8.
[node.js] http 모듈로 간단하게 유저 API 서버 만들기 [알아야하는 것]- ES6 arrow function- Node.js module system : module, load- 먼저 보면 좋은 게시글 : [node.js] 기본 - processing model, module system, async : http://jinbroing.tistory.com/139 [API 서버]- 요청, 응답하는 서버 [사용할 내장 모듈 + 유저 API 서버 만들기]- http 모듈- 사용 방법: https://nodejs.org/dist/latest-v6.x/docs/api/http.htmlconst http = require('http'); const hostname = '127.0.0.1'; const port = 3000; const server = http.creat.. 2017. 6. 5.
[node.js] 기본 - processing model, module system, async] [Node.js processing model]- 이벤트기반의 비동기 I/O(콜백) 프레임워크 1) 클라이언트가 보내는 요청을 모두 이벤트로 처리 : 이벤트 큐에 쌓기2) 이벤트 루프 : 이벤트 큐에 쌓인 이벤트를 하나하나 처리(싱글쓰레드) 후 요청 클라이언트에 응답3) 이벤트 : 가벼운 처리 / 무거운 처리(네트워크, 파일 읽고 쓰기 등)- 가벼운 처리 : 이벤트 루프 처리 - 무거운 처리 : 이벤트 루프가 Non-blocking Worker(C++)로 보내 처리 후 이벤트 형태로 큐에 다시 전달, 루프가 큐에서 뽑아 처리(응답) [모듈 시스템]- 모듈 : 일정 기능을 하는 코드 덩어리, 서비스를 구현할 때 하나의 소스코드로 만드는게 아니라 기능별로 모듈화해서 만듬- 브라우저 : window 객체(스코.. 2017. 6. 4.
[API] nodejs 파일 업로드 모듈 [필수적으로 먼저 봐야할 게시글]- [node.js] 모듈, 미들웨어 개념 : http://jinbroing.tistory.com/126 [express 파일 업로드 기능 및 특징]- express는 파일 업로드 기능을 제공하지않음 : 리얼 틀 제공(최소한의 구조), 써드파티 미들웨어(모듈)와 express 조합 - multer : express와 함께 사용하는 파일 업로드 기능(써드파티 미들웨어) 제공 모듈 [express 프로젝트 multer require 시키기]1) npm install --save multer : multer 모듈을 다운로드 받아 프로젝트 모듈 관리자에서 관리할 수 있도록 추가하기- express 프로젝트 내 package.json 파일 확인해보면 multer가 추가된 것을 볼 .. 2017. 5. 23.
[node.js] 모듈과 미들웨어 개념 [모듈과 미들웨어란]- 모듈 : 기본적으로 제공하는 기능 뿐 아니라 추가적으로 기능을 사용할 때 가져다 쓸 수 있는 라이브러리1) 내장 모듈 : nodejs에서 제공하는 모듈2) 확장 모듈 : nodejs 사용자들이 만들어낸 모듈 - 미들웨어 : 구조 내에서 중간 처리를 위한 함수(함수들의 꾸러미가 모듈)1) express 프레임워크에서 사용할 수 있는 중간 처리 목적의 소프트웨어 : 기본적인 express 구조 내에서 처리 목적으로 사용2) 요청에 대한 응답을 완수하기 전까지 중간중간 다양한 일을 처리할 수 있음3) 미들웨어 함수 생명주기 : request - response 응답을 주기로 종료 4) 미들웨어 함수 우선순위 : 먼저 로드되는 미들웨어 함수가 먼저 실행됨(코드 순서 중요) 12345678.. 2017. 5. 23.
[node.js]Supervisor로 웹서버 자동 재시작하기 [Supervisor의 역할]- static 디렉토리 내에 있는 이미지, 자바스크립트 등 파일은 수정하면 바로 반영됨- 그러나 그외 웹서버 관련 자바스크립트 파일은 수정을 해도 바로 반영되지않음, 서버 재시작을 해야함- Supervisor는 ctrl+c를 통해 웹서버 구동을 껐다가 다시 시작하는 행동을 개발자가 직접하지않아도 자동으로 하게끔 함- 사무 자동화랄까? [Supervisor 설치 및 실행]- Supervisor는 npm을 통해서 설치함 1) npm install supervisor -g - 슈퍼바이저를 설치하는데, 서버컴퓨터 전역에서 사용할 수 있도록 -g (옵션값)을 달아줌(어떠한 프로젝트간에 사용가능)- permission denied가 뜨면 sudo를 붙여 루트 권한으로 설치해줌 2) s.. 2017. 5. 15.
[node.js] express 로그인 정보 전달하기 [먼저 보면 좋은 게시글] - [웹기본개념] HTTP 그리고 REST API 다가가기 : http://jinbroing.tistory.com/96 (HTTP 메서드 참고)- [node.js] express 라우팅, CRUD / 쿼리스트링 : http://jinbroing.tistory.com/97 (라우팅이란 참고)- [node.js] express 그리고 템플릿엔진 ejs : http://jinbroing.tistory.com/107 [서버에 요청할 때 구분해서 쓰자]- 서버에 정보를 요청(Read)할 때는 GET- 서버에 클라이언트가 정보를 전달할 때에는 POST [서버로 데이터를 전송할땐]- 클라이언트가 서버로 데이터를 전송할 땐 POST- express POST 방식 구현하기 [서버로 데이터 전송.. 2017. 5. 15.