NOTICE 
node.js 에 해당하는 글 : 1 개
2014.05.02 :: node.js




  




Node.js


node.js는 간단히 말하면 서버사이드 자바스크립트이다.

즉 node.js로 서버사이드에서 프로그래밍이 가능하다.


node.js는 크롬 웹브라우저의 JavaScript runtime 엔진을 기반으로 만들어졌으며, 쉽게 빠르고 확장이 용이한 네트워크 어플리케이션을 만들기 위한 플랫폼이다. node.js는 분산 디바이스 환경에서 실행되는 가볍고 효율적이며 데이터 중심의 실시간 어플리케이션에 알맞은 이벤트 드리븐, 넌블러킹 I/O 모델을 사용한다.

공식 사이트 : nodejs.org



node.js는 라이언 달(Ryan Dahl)이 만들기 시작하여 현재는 오픈소스 프로젝트로 많은 개발자들이 참여하고 있다.


node.js의 특징

싱글 스레드 기반

이벤트 루프를 사용하는 비동기 I/O

자바스크립트 언어 사용


설치는 nodejs.org에서 제공하는 설치본을 이용하면 된다. 리눅스의 경우 소스코드를 다운로드하여 컴파일하거나 데비안 계열이라면 apt-get으로 설치할 수 있다. 설치에 대한 내용은 하단에 있는 참고자료를 참고할 것.


설치된 node.js의 버전 확인하기


$ node --version

v0.10.27




node.js맛보기


(1)콘솔 테스트


아래와 같은 내용의 helloworld.js를 만든다.


console.log('Hello World');


콘솔에서 다음과 같이 입력하여 실행시킨다.


$ node helloworld.js


콘솔에 "Hello World"가 출력된 것을 확인할 수 있다.


(2)웹서버 테스트


helloworld보다 본격적인 예제를 하나 더 해보자. 클라이언트로 부터 요청이 오면 "Hello World"로 응답하는 간단한 웹서버 예제이다.

아래와 같은 내용의 server.js를 만든다.


var server = require('http');


server.createServer(function(req, res) {

res.writeHead(200, {'Content-Type' : 'text/plain'});

res.end('Hello World\n');

}).listen(3000);


console.log('서버가 3000포트로 시작되었습니다');


소스의 내용은...

먼저 웹서버를 사용하기 위해 http모듈을 로드한다.

그리고 서버를 시작시키기 위해 server.createServer함수를 호출하는데 이때 요청이 왔을 때 호출되는 콜백함수를 지정한다.

콜백함수의 첫번째 인자는 http 요청 객체, 두번째 인자는 http 응답 객체이다.

콜백함수에서는 응답 헤더의 contents type을 text/plain으로 지정하고, 응답내용으로 Hello World를 지정한다.


이것으로 http요청을 처리할 수 있는 웹서버가 작성되었다.


서버를 실행해 보자.


$ node server.js


실행된 어플리케이션이 종료되지 않는 것을 알 수 있다.

이제 웹브라우저에서 로컬 머신의 3000번 포트로 접속해 보면 웹브라우저에 Hello World가 출력되는 것을 확인할 수 있다.



간단하지 않은가?



Coding Style


아래의 참고자료에서 소개한 nodeguide.com에 있는 가이드 중, 코딩 스타일에 관한 가이드의 내용 중 일부를 정리했다.


(1) Tabs vs Spaces

탭 대신 2개의 스페이스를 사용한다.


(2) Semicolons

세미콜론을 꼭 사용한다.

(3) Editors

어떤 에디터 프로그램을 사용해도 되지만 JavaScript Syntax highlighting이나 현재 열려있는 node.js 파일의 실행기능을 가진 에디터를 사용하면 편리하다. 


(4) Trailing whitespace

소스를 저장소에 커밋하기 전에 불필요한 공백을 제거하자. 이건 예의 아닌가?


(5) Line length

한 줄을 80자로 제한하자.


(6) Quotes

문자열을 사용할 때 쌍따옴표 보다는 한따옴표를 사용하자.

ex)

var foo = 'bar';    <- 한따옴표를 사용하자.


(7) Braces

괄호를 열 때는 동일 라인에서 열자.

ex)

if (true) {    <- 밑으로 내리지 말자!

  ...

}


(8) Variable declarations

하나의 var에 하나의 변수를 선언하자.

ex) 

var keys = ['foo', 'bar'];

var values = [23, 42];

var sum;


(9) Variable and property names

"lower camel case"를 사용하자. 즉, 소문자로 시작하고, 단어와 단어사이의 첫문자를 대문자로 사용한다.

ex)

lastYearProfit


(10) Class names

"upper camel case"를 사용하자. 즉, 대문자로 시작하고, 단어와 단어사이의 첫문자를 대문자로 사용한다.

ex)

BankAccount


(11) Constants

상수는 모든 문자를 대문자로 사용한다.

ex)

var SECOND = 1 * 1000;


(12) Object / Array creation

객체나 배열을 선언할 때 콤마는 동일라인을 사용한다. 


(13) Equality operator

Triple equality('===')를 사용하자.

이 연산자는 '=='와는 달리 타입과 값 모두 동일한지 체크한다.

※ '=='연산자는 타입이 다르더라도 값이 같으면 같다고 판단한다.


(14) Extending prototypes

JavaScript의 프로토타입 확장을 사용하지 말자.

※프로토타입 확장은 Class가 존재하지 않는 JavaScript에서 객체를 확장하기 위해 사용하는 방법이다.


(15) Conditions

사소하지 않은 조건문은 알기 쉬운 이름의 변수를 사용한다.

ex)

var isAutorized = (user.isAdmin() || user.isModerator());

if(isAutorized) {

  ...

}


(16) Function length

함수는 되도록 짧게 만들어야 한다.


(17) Return statements

중첩 if문 사용을 자제하고, 항상 가능한한 빨리 리턴한다.

ex)

if(val < 0) {

return false;

}


if(val > 100) {

return false;

}


return true;

}


(18) Named closured

클로저란 생성한 함수의 반환값을 그대로 변수처럼 사용하는 것이다. (자바스크립트에서 함수는 곧 객체이므로)

클로저를 사용할 때 이름을 지정하는 것에 대해 부담을 갖지 마라. stack trace할 때 편하다.

ex)

req.on('end', function onEnd() {        <--- onEnd라고 클로저에 이름을 지정하고 있다.

console.log('winning');

}


(19) Callbacks

node.js는 넌블러킹 I/O를 사용하므로 함수는 일반적으로 결과를 콜백함수에 전달한다. 관습적으로 node core는 콜백함수의 첫번째 인자에는 에러 객체 위해 사용한다. 사용자가 만드는 콜백 함수도 동일한 어프로치를 할 것. 


(20) Object.freeze, Object.preventExtensions, Object.seal, with, eval

사용하지 말 것.


(21) Getters and setters

setter를 사용하지 말 것. setter는 당신의 소프트에어를 사용하려는 사람들에게 문제를 일으킬 수 있다.

getter는 사용하는데 부담을 갖지 말 것.


(22) EventEmitters

node.js는 EventEmitter라는 클래스를 가지고 있다. node.js에서 이벤트를 처리하는 클래스를 만들 때 EventEmitter를 상속하여 만든다. 그러나 사용자가 만든 객체로 부터의 이벤트를 자신이 리슨하는 것은 하지 않기를 권장한다.



참고자료


nodeguide.com사이트에는 Felix Geisendorfer라는 분이 node.js를 배우려는 사람들을 위한 가이드를 정리해 놓으셨다.

이곳에는 node.js의 설치부터 시작해서 Hello World예제, 디버깅 방법, 배포, 코딩 스타일 등 여러가지 가이드들이 있다.

node.js를 배우려는 사람에게는 매우 유용한 곳이다.








  
트랙백   |  댓글   |
 이전  1   다음 

최근댓글
최근트랙백
fotowall :: ncloud RSS Feeds today :    yesterday :
total :