-
Notifications
You must be signed in to change notification settings - Fork 3
2014_NodeJS_Progamming_NodeModuleSystem
cecil1018 edited this page Sep 1, 2015
·
11 revisions
- 모듈이란 class, package(java), namespace(c++)과 비슷하다고 생각하면 83% 먹고 들어간다.
- 모듈은 하나의 파일 혹은 하나의 디렉토리
- require는 import(java), include(c++)과 비슷하다고 생각하면 83% 먹고 들어간다.
- CommonJS Module system을 따랐다고 합니다.
var mymodule = require('./mymodule'); //상대경로
var mymodule = require('/home/myname/myapp/mymodule.js'); //절대경로
var http = require('http'); //코어모듈- 코어 모듈은 node_modules 폴더에서 가져온다.
- require 한 다음 http.createServer(...) 이런 식으로 사용한다.
- v8 + 수 많은 module
- 웹서버? 프레임워크?
- 직접만든 간단한 웹 서버
var http = require("http");
http.createServer(function(request, response) {
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("Hello World");
response.end();
}).listen(8888);- 외부 호출 항수는 export 명시
- 변수는 모듈 private
- 아까 그 웹 서버
var http = require("http");
function start() {
function onRequest(request, response) {
response.writeHead(200, {"Content-Type": "text/plain"});
response.write("Hello World");
response.end();
}
http.createServer(onRequest).listen(8888);
}
exports.start = start;
/*
// 실행하려면
var server = require("./server");
server.start();
//*/ - 디렉토리 하나가 하나의 모듈
- 패키지 데스크립터(package.json) 제공 또는 진입점 파일(index.js)을 디렉토리에 포함
- 모듈 다운로드, 설치 등: 리눅스, 파이썬 등에서 사용하는 시스템
- 세상의 모든 module을 모은 저장소가 있다.
- 새 모듈을 설치 할 때는 저장소에서 다운 받는다.
- https://www.npmjs.org/
- 모듈 참 많다.
- 도움말: npm help npm
- 설치: npm install modulename
- 의존관계 모듈까지 알아서 설치해주니 편리
- 기타 여러 명령은 생략
- 특정 버전 설치, 제거, 업데이트, 설치된 목록
- http: node.js의 존재 이유라고나 할까
- socket.io: 소켓서버 만들 때
- express: 나름 프레임워크, 요즘 누가 http 모듈을 생으로 쓰니?
- request: HTTP request client
- async: 안 그대로 비동긴데 더 비동기로
- jade: jade 템플릿
- underscore: js 유틸리티 함수 모음
- connect: 미들웨어, 나름 유명한 듯
- uglify-js: 압축, 예쁘게 코드 정리
- 그 외
- Coffee-script, Optimist, Colors, Redis, Mime, JSDOM
- 유틸리티
- 관습적으로 var _ = require('underscore');로 사용해서 underscore 또는 var us = require('underscore');
- 유틸리티
- each: _.each(['apple','cherry'], function (fruit) { console.log(fruit); });
- mixin: 기존 모듈에 함수 추가
- console.log()에 색과 스타일 추가
- console.log('This Node kicks it!'.rainbow.underline);
- 명령행 옵션 분석
//node ./app.js -o 1 -t 2
var argv = require('optimist').argv;
console.log(argv.o + " " + argv.t);- html dom object
<!DOCTYPE html>
<html>
<head>
<style>
p { color:blue; margin:8px; }
</style>
</head>
<body>
<p id='test'>Test Paragraph.</p>
</body>
</html>
jsdom.env('./test.html',['http://code.jquery.com/jquery-1.7.1.min.js'], function(errors, window) {
wind = window;
});
console.log(wind.$("#test").text());- 모듈 확장자는 js, node, json
- 모듈을 찾지 못 했다면 자동으로 여러 디렉토리를 뒤져본다.
- 자세한 내용은 생략
- 모듈 unload
- delete require.cache['./circle.js');
###내가 만든 모듈 배포
- 패키지 디스크립터(package descriptor)의 여러 필수 항목을 채운다.
- 이름, 설명, 버전 등
- npm init
- 하위 디렉토리: examples, test, doc
- npm install. -g, npm adduser, npm publish