node.js

노드JS

공부하게 된 계기

프로젝트에서 노드를 사용할 것 같다는 의견이 있어서 나름 낑낑거리며 공부했다. 프로젝트 막바지인 지금, 당시 정리해둔 문서가 많이 허접하긴 하지만 뭐… 공부했던 기록을 남겨둔다.

참고한 것

Do it! Node.js

근데 많이 참고하진 않았다…
변명처럼 들리겠지만 당시에 나는 플젝에서 필요할 것만을 보고 싶었고, 실제로 프로젝트 팀원들에게 그렇게 요구 받았다.(프로젝트 시작 전 우리가 어떤 기능을 쓸 것인지에 대해 고민해보고, 각자 특정 부분을 맡아 공부 후 다른 팀원에게 설명하는 식으로 스터디를 진행했다)

참고한 책은 모든 장이 연결되어 순차적으로 한 웹사이트를 구현하는 방식에 대해 이야기하고 있어서… 예를 들어 우리 프로젝트에서는 몽고 디비를 빼자고 해서, 나는 공부할 당시엔 몽고 디비를 간략히 보거나 아예 보지 않아도 됐다. 이런 식으로 특정 장을 훑듯 보고 다음 장으로 건너 뛰니, 제대로 이해가 되지 않은 파트가 발목을 잡아 정말 이해해야할 예제 소스가 잘 이해가 되지 않았다.

사실 노드를 써서 이번 프로젝트를 진행한 것도 사실이고, 내 블로그도 노드를 기반으로 해서 만든 프레임웤이긴 한데. 아직도 잘 모르겠다. 그냥 그 때 그 때 검색하면서 진행을 해서…

정말 본론 시작 - 당시에 정리한 문서

시작하기 전에

node.js

자바 스크립트를 이용해 서버를 만들 수 있는 개발 도구

node.js 특징

  • 비동기 입출력 가능
  • 이벤트 기반
  • 모듈과 패키지

npm(Node Package Manager)

  • 노드 패키지의 설치, 삭제를 지원하는 프로그램
  • 패키지(모듈+α)는 만든 이가 다른 사람도 사용할 수 있도록 인터넷에 공유해놓는 게 일반적

노드에서 사용할 수 있는 대표적인 전역 객체

  • console
  • exports
  • process

노드에서 사용할 수 있는 대표적인 전역 변수

  • __filename
  • __dirname

console의 메서드들

log()
형식 특수문자 예시 코드 콘솔
%d 숫자 console.log(“ 숫자 : %d”, 10) 숫자 : 10
%s 문자열 console.log(“ 문자 : %s”, 문지은) 문자 : 문지은
%j JSON console.log(“JSON : %j”, { 팀장 : “ 이주원”}) JSON {“ 팀장” : “ 이주원”}

log() 외

메서드 설명
dir(object) 객체 속성 출력
time( 객체명) 실행 시간 측정을 위해 실행 시작 시간 기록
timeEnd( 객체명) 실행 시간 측정을 위해 실행 종료 시간 기록

모듈 사용(exports)

기존에 여러 개로 나눠둔 무언가를 필요에 따라 맞춰다가 쓰는 식

예시

module1.js
exports.methodName = function() {
    retrun result;
};
main.js
var module = require('module1');
// require()
// : 모듈을 불러올 때 사용하며 파라미터는 모듈의 이름이나 모듈의 경로
// 모듈 객체가 리턴되어 모듈객체.함수명(); 으로 접근 가능
// 만약 이름에 해당하는 파일이 없다면, 이름에 해당하는 폴더를 찾아 그 안의 index.js 실행
module.methodName();

exports와 module.exports

이해에 참고했던 블로그

exports module.exports
여러 개의 변수, 함수를 각각의 속성으로 추가 가능 하나의 변수나 함수, 객체를 직접 할당, 참조가 끊기면 빈 객체 리턴됨 (단 하나의 객체만 사용 가능하다고 이해)

process

속성 / 메서드 설명 예시
argv 프로세스를 실행할 때 전달되는 파라미터 정보를 가진 속성 process.argv.length : 파라미터 개수 process.argv[2] : 2 번 배열의 파라미터
env 환경 변수 정보를 가진 속성 process.env[‘OS’] : OS 환경 변수의 값(data)
exit() 프로세스를 끝내는 메서드

내장 모듈과 외장 모듈

  • 내장 모듈 : 사용자가 직접 만든 js 모듈
  • 외장 모듈 : 다른 사람이 만들어 놓아 사용자가 npm 패키지를 이용해 다운로드한 js 모듈

외장 모듈 경로 : 프로젝트 폴더 > node_modules 폴더 > 모듈명 폴더

만약 매번 프로젝트마다 같은 패키지를 이용한다면 brackets-nodejs에 node_modules 폴더를 이동시키면 된다.

내장 모듈 사용하기(path만 정리)

모든 내장 모듈은 여기에서 볼 수 있다

메서드 설명
join() 여러 개의 이름을 모두 합쳐 하나의 파일 패스로 만들며, 구분자 등을 알아서 조정
dirname() 파일 패스에서 디렉터리 이름만 반환
basename() 파일 패스에서 파일 이름만 반환
extname() 파일 패스에서 확장자만 반환

외장 모듈 사용하기

사용 예시

기존에 nconf라는 외부 모듈을 설치했다는 전제 하
외장모듈 설치 단축키 : % npm install 외장모듈이름

var nconf = require('nconf');
// 외부 모듈의 경우 경로가 아닌 모듈의 이름을 직접 불러야 함
nconf.modulInMethod();
package.json

% npm init 명령어를 실행하면 생기는 json 파일로, 프로젝트에 대한 기본 정보가 들어 있으며 현재 프로젝트에 설치된 외부 모듈의 의존도 함께 기록됨향후 다른 PC에서 같은 모듈들을 사용하고 싶다면 package.json만 옮겨서 가져가면 된다.

사용법

  1. % npm init: package.json 파일 생성
  2. % npm install 외부모듈이름 –save : 의존 설정할 외부모듈을 설치한다. package.json이 있는 상태에서 설치된 것들만 package.json이 기록한다.
  3. 향후 다른 PC로 옮길 때 PC로 json 파일 옮기고,

% npm install

명령어 실행 : package.json의 의존 속성을 참고해 패키지 설치