SlideShare ist ein Scribd-Unternehmen logo
1 von 21
Downloaden Sie, um offline zu lesen
Hello, Node.js
    Chulju, Hong
        PoolC
Node.js “소개” 일뿐
뭔가 끄적이고 싶다면
    Try it yourself
           저도 잘 몰라요 포교할 뿐
단순한 웹 프레임워크 같은게 아니다!

Node.js is a platform
built on Chrome's JavaScript
runtime for easily building fast,
s c a l a b l e n e t w o r k
applications.
      스케일러블한 네트워크 어플리케이션! 강력해보인다!
흔한 오해
Q : Node.js 가 뭔지 아세요?
A : django 같이 웹 사이트 만들 때 쓰는거 아니에요?
앞에서도 썼지만

웹 프레임워크와는 다르다!
    웹 프레임워크와는!
                        물론 만들 수는 있다	
  
Node.js 를 이용해서
  Command Line Application
  Web Server
  TCP Server
  Bot
  왠만한 (I/O가 많은 것이라도) Server
            등을 만들 수 있답니다
굳이 Node.js를 써서
만들어야하나?
•  Frontend와 Backend가 javascript로 대동단결!	
  
•  강력한 V8 엔진 기반        크롬에 쓰는 그거
•  Event-driven, non-blocking I/O
•  다른 걸 가져다 쓰거나 자신의 모듈을 게시하기 매우 쉬운 시스템
                                      날 가져요 npm 엉엉
Node.js 시작하기




                  http://nodejs.org


     Click!	
  
길었다, 서론
본다! Hello, World!

     console.log(“Hello, World!”);
         웹 프로그래밍 하셨으면 다들 아시잖아요
                     익숙한 자바스크립트
              하지만 IE에서 하면 어떻게 될까
길었다, 서론
본다! Hello, World!
      그 코드를 hello.js 로 저장하고
      Command Line에

          node hello.js

      그리고 Hello, World! 가 출력된다

                           참 쉽죠?
HTTP Server 만들기
Method 1 : 직접 만든다 (Node.js http 모듈을 이용)


   var http = require('http');
   
   var server = http.createServer( function(req, res) {
      
var body = 'Hello, World!';
      
res.writeHead(200, {
      
   
'Content-Length': body.length,
      
   
'Content-Type': 'text/plain'
      
});
      
res.end(body);
   } );
   
   server.listen(3000);
HTTP Server 만들기
Method 2 :
만들어진 것들을 가져다쓴다 (Express, etc.)

가져다쓰는게 편합니다                                         global
ex)	
  express	
  

                     $	
  npm	
  install	
  -­‐g	
  express	
  

                     $	
  express	
  myapp	
  

                     $	
  cd	
  myapp	
  	
  &&	
  npm	
  install	
  

                     $	
  node	
  app	
  
Node 모듈을 시작하는 방법
드디어 등장하는 npm


      >            npm init                                        // package.json 을 생성함


      {	
  
      	
  	
  "name":	
  "testapp",	
  
      	
  	
  "version":	
  "0.0.0",	
  
      	
  	
  "descrip@on":	
  "ERROR:	
  No	
  README.md	
  file	
  found!",	
  
      	
  	
  "main":	
  "index.js",	
  
      	
  	
  "scripts":	
  {	
  
      	
  	
  	
  	
  "test":	
  "echo	
  "Error:	
  no	
  test	
  specified"	
  &&	
  exit	
  1"	
  
      	
  	
  },	
  
      	
  	
  "repository":	
  "",	
  
      	
  	
  "author":	
  "",	
  
      	
  	
  "license":	
  "BSD"	
  
      }	
  
모듈 가져다쓰기
>   필요한 모듈 찾기
    Google	
  it	
  :	
  node	
  {what	
  you	
  want}	
  
    hTps://npmjs.org/	
  
    	
  
>    모듈 깔기
    npm	
  install	
  {module	
  name}	
  {-­‐-­‐save}	
  

>   앱에 모듈 가져오기
    var	
  module	
  =	
  require(‘module	
  name’)	
  
적절한 모듈들
 몇 가지 안 써보긴 했지만 여기도 참고

  express,	
  socket.io,	
  mongoose,	
  phantom.js,	
  etc.	
  


웹 프레임워크
                      MongoDB for Node.js
                                                  Full web stack
            웹 소켓 흉내
                                                  No browser required
잉여 예제                                     모듈 없이 하는 것에 대해서는
                                          이 곳을 참조

- 콘솔에 colored text 출력하기
 > 적절한 구글링을 통해 colors 라는 모듈을 발견
 > 모듈 페이지로 가서 사용법을 확인
                         보통 Github등의 repository의 readme에 있음
 > 자기 앱 디렉터리에서 npm install colors를 입력
 var colors = require(‘colors’);
 console.log(‘Hello, World!’.rainbow);




                         참 쉽죠?
모듈 만들기
>   모듈 작성하기
    func@on	
  foo()	
  {	
  
          	
  //blahblah	
  
    }	
  
>   모듈 내보내기
    exports.foo	
  =	
  foo;	
  

>   내 모듈 가져오기
    var	
  my_module	
  =	
  require(‘./mymodule’);	
  
    mymodule.foo();	
  

          위의 내용이 같은 폴더의 mymodule.js에 저장되어 있을 때
동기
비동기 프로그래밍                             다른 패러다임


기존에 써왔던 방식

int val = getValueSync();
   왜 C++?

익숙해져야할 방식
getValueAsync(function(val) {
 콜백으로 값을 받아내서 이용
  
console.log(val);
});
비동기 프로그래밍
을 접한 사람들의 실수?
동기 -> 비동기로의 이식

int val1 =   getValue1();
int val2 =   getValue2();
…
int val100   = getValue100();
print(val1   + val2);


                                 function getValue1( function(val) {
                                     
var val1 = val;
                                     
function getValue2( function(val) {
                                     
    
var val2 = val;
                                     
    
…
                                     
…
                                     
} );
                                 } );
여기 들어가봅시다

hTp://callbackhell.com/	
  
	
              이름만 봐도 헬
자잘한 팁
node.js 웹 어플리케이션을 작성할 때,
   코드 수정 -> 앱 재시작이 너무 귀찮아요

   supervisor 라는 모듈을 사용해봅시다.
   (https://github.com/isaacs/node-supervisor)



javascript 쓰기 싫어요

   뭐라할 말은 없는데 coffeescript, dart 같은걸 끼얹어본다던가..
   Opal(http://opalrb.org/) 같은 것도 있어요 (Ruby to javascript compiler)
Any	
  Ques@ons?	
  

Weitere ähnliche Inhalte

Was ist angesagt?

Startup JavaScript 9 - Socket.IO 실시간 통신
Startup JavaScript 9 - Socket.IO 실시간 통신Startup JavaScript 9 - Socket.IO 실시간 통신
Startup JavaScript 9 - Socket.IO 실시간 통신Circulus
 
Html5 web workers
Html5 web workersHtml5 web workers
Html5 web workersWoo Jin Kim
 
Node.js의 도입과 활용
Node.js의 도입과 활용Node.js의 도입과 활용
Node.js의 도입과 활용Jin wook
 
Node.js 현재와 미래
Node.js 현재와 미래Node.js 현재와 미래
Node.js 현재와 미래JeongHun Byeon
 
Node js[stg]onimusha 20140822
Node js[stg]onimusha 20140822Node js[stg]onimusha 20140822
Node js[stg]onimusha 20140822병헌 정
 
Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012Daum DNA
 
아꿈사 발표 Node JS 프로그래밍 8장
아꿈사 발표 Node JS 프로그래밍 8장아꿈사 발표 Node JS 프로그래밍 8장
아꿈사 발표 Node JS 프로그래밍 8장Woo Yeong Choi
 
막하는 스터디 네 번째 만남 AngularJs (20151108)
막하는 스터디 네 번째 만남 AngularJs (20151108)막하는 스터디 네 번째 만남 AngularJs (20151108)
막하는 스터디 네 번째 만남 AngularJs (20151108)연웅 조
 
Python server-101
Python server-101Python server-101
Python server-101Huey Park
 
Node.js 자바스크립트로 서버사이드 개발하기
Node.js 자바스크립트로 서버사이드 개발하기Node.js 자바스크립트로 서버사이드 개발하기
Node.js 자바스크립트로 서버사이드 개발하기JeongHun Byeon
 
Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나JeongHun Byeon
 
[NEXT] Flask 로 Restful API 서버 만들기
[NEXT] Flask 로 Restful API 서버 만들기 [NEXT] Flask 로 Restful API 서버 만들기
[NEXT] Flask 로 Restful API 서버 만들기 YoungSu Son
 
Rb vs wp 로드타임 성능비교
Rb vs wp 로드타임 성능비교Rb vs wp 로드타임 성능비교
Rb vs wp 로드타임 성능비교Gitaek kwon
 
Resource Handling in Spring MVC
Resource Handling in Spring MVCResource Handling in Spring MVC
Resource Handling in Spring MVCArawn Park
 

Was ist angesagt? (20)

Node.js 심화과정
Node.js 심화과정Node.js 심화과정
Node.js 심화과정
 
Startup JavaScript 9 - Socket.IO 실시간 통신
Startup JavaScript 9 - Socket.IO 실시간 통신Startup JavaScript 9 - Socket.IO 실시간 통신
Startup JavaScript 9 - Socket.IO 실시간 통신
 
Html5 web workers
Html5 web workersHtml5 web workers
Html5 web workers
 
Express 프레임워크
Express 프레임워크Express 프레임워크
Express 프레임워크
 
Node.js 기본과정
Node.js 기본과정Node.js 기본과정
Node.js 기본과정
 
Node.js의 도입과 활용
Node.js의 도입과 활용Node.js의 도입과 활용
Node.js의 도입과 활용
 
Node.js 현재와 미래
Node.js 현재와 미래Node.js 현재와 미래
Node.js 현재와 미래
 
Node js[stg]onimusha 20140822
Node js[stg]onimusha 20140822Node js[stg]onimusha 20140822
Node js[stg]onimusha 20140822
 
Node.js at OKJSP
Node.js at OKJSPNode.js at OKJSP
Node.js at OKJSP
 
Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012Javascript everywhere - Node.js | Devon 2012
Javascript everywhere - Node.js | Devon 2012
 
Node.js 첫걸음
Node.js 첫걸음Node.js 첫걸음
Node.js 첫걸음
 
아꿈사 발표 Node JS 프로그래밍 8장
아꿈사 발표 Node JS 프로그래밍 8장아꿈사 발표 Node JS 프로그래밍 8장
아꿈사 발표 Node JS 프로그래밍 8장
 
막하는 스터디 네 번째 만남 AngularJs (20151108)
막하는 스터디 네 번째 만남 AngularJs (20151108)막하는 스터디 네 번째 만남 AngularJs (20151108)
막하는 스터디 네 번째 만남 AngularJs (20151108)
 
Python server-101
Python server-101Python server-101
Python server-101
 
Node.js 자바스크립트로 서버사이드 개발하기
Node.js 자바스크립트로 서버사이드 개발하기Node.js 자바스크립트로 서버사이드 개발하기
Node.js 자바스크립트로 서버사이드 개발하기
 
Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나
 
[NEXT] Flask 로 Restful API 서버 만들기
[NEXT] Flask 로 Restful API 서버 만들기 [NEXT] Flask 로 Restful API 서버 만들기
[NEXT] Flask 로 Restful API 서버 만들기
 
Rb vs wp 로드타임 성능비교
Rb vs wp 로드타임 성능비교Rb vs wp 로드타임 성능비교
Rb vs wp 로드타임 성능비교
 
How to Grunt.js
How to Grunt.jsHow to Grunt.js
How to Grunt.js
 
Resource Handling in Spring MVC
Resource Handling in Spring MVCResource Handling in Spring MVC
Resource Handling in Spring MVC
 

Andere mochten auch

DGMIT 제3회 R&D 컨퍼런스 1TEAM : NODE.JS
DGMIT 제3회 R&D 컨퍼런스 1TEAM : NODE.JSDGMIT 제3회 R&D 컨퍼런스 1TEAM : NODE.JS
DGMIT 제3회 R&D 컨퍼런스 1TEAM : NODE.JSdgmit2009
 
I know - Chrome and Plugin
I know - Chrome and PluginI know - Chrome and Plugin
I know - Chrome and PluginTaewoo Kim
 
세션3 node.js의 의미와 자바의 대안
세션3 node.js의 의미와 자바의 대안세션3 node.js의 의미와 자바의 대안
세션3 node.js의 의미와 자바의 대안Lee Ji Eun
 
Ryan Dahl의 Node.js 소개 동영상 해설 by doortts
Ryan Dahl의 Node.js 소개 동영상 해설 by doorttsRyan Dahl의 Node.js 소개 동영상 해설 by doortts
Ryan Dahl의 Node.js 소개 동영상 해설 by doorttsSuwon Chae
 
Node.js 시작하기
Node.js 시작하기Node.js 시작하기
Node.js 시작하기Huey Park
 
시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015
시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015
시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015Goonoo Kim
 
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안Jeongsang Baek
 
웹 Front-End 실무 이야기
웹 Front-End 실무 이야기웹 Front-End 실무 이야기
웹 Front-End 실무 이야기JinKwon Lee
 
Node Foundation Membership Overview 20160907
Node Foundation Membership Overview 20160907Node Foundation Membership Overview 20160907
Node Foundation Membership Overview 20160907NodejsFoundation
 

Andere mochten auch (11)

DGMIT 제3회 R&D 컨퍼런스 1TEAM : NODE.JS
DGMIT 제3회 R&D 컨퍼런스 1TEAM : NODE.JSDGMIT 제3회 R&D 컨퍼런스 1TEAM : NODE.JS
DGMIT 제3회 R&D 컨퍼런스 1TEAM : NODE.JS
 
I know - Chrome and Plugin
I know - Chrome and PluginI know - Chrome and Plugin
I know - Chrome and Plugin
 
세션3 node.js의 의미와 자바의 대안
세션3 node.js의 의미와 자바의 대안세션3 node.js의 의미와 자바의 대안
세션3 node.js의 의미와 자바의 대안
 
Ryan Dahl의 Node.js 소개 동영상 해설 by doortts
Ryan Dahl의 Node.js 소개 동영상 해설 by doorttsRyan Dahl의 Node.js 소개 동영상 해설 by doortts
Ryan Dahl의 Node.js 소개 동영상 해설 by doortts
 
Node.js 시작하기
Node.js 시작하기Node.js 시작하기
Node.js 시작하기
 
Node.js 기본
Node.js 기본Node.js 기본
Node.js 기본
 
시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015
시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015
시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015
 
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
 
Node.js in Flitto
Node.js in FlittoNode.js in Flitto
Node.js in Flitto
 
웹 Front-End 실무 이야기
웹 Front-End 실무 이야기웹 Front-End 실무 이야기
웹 Front-End 실무 이야기
 
Node Foundation Membership Overview 20160907
Node Foundation Membership Overview 20160907Node Foundation Membership Overview 20160907
Node Foundation Membership Overview 20160907
 

Ähnlich wie Node.js intro

[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rd[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rdPark Jonggun
 
Vue 뽀개기 1장 환경설정 및 spa설정
Vue 뽀개기 1장 환경설정 및 spa설정Vue 뽀개기 1장 환경설정 및 spa설정
Vue 뽀개기 1장 환경설정 및 spa설정leejungwang
 
Node.js 팀 스터디 발표자료.
Node.js 팀 스터디 발표자료.Node.js 팀 스터디 발표자료.
Node.js 팀 스터디 발표자료.SeungWoo Lee
 
병렬 프로그래밍
병렬 프로그래밍병렬 프로그래밍
병렬 프로그래밍준혁 이
 
빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.xTerry Cho
 
Web assembly 맛보기
Web assembly 맛보기Web assembly 맛보기
Web assembly 맛보기GyeongSeok Seo
 
Tensorflow service & Machine Learning
Tensorflow service & Machine LearningTensorflow service & Machine Learning
Tensorflow service & Machine LearningJEEHYUN PAIK
 
Internship backend
Internship backendInternship backend
Internship backendYein Sim
 
Softcon_하재권_Only javascript의 하이브리드 앱서버 도전기
Softcon_하재권_Only javascript의 하이브리드 앱서버 도전기Softcon_하재권_Only javascript의 하이브리드 앱서버 도전기
Softcon_하재권_Only javascript의 하이브리드 앱서버 도전기hajaekwon
 
Introduce Yeoman
Introduce YeomanIntroduce Yeoman
Introduce Yeoman항희 이
 
Laravel 로 배우는 서버사이드 #2
Laravel 로 배우는 서버사이드 #2Laravel 로 배우는 서버사이드 #2
Laravel 로 배우는 서버사이드 #2성일 한
 
ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자Sewon Ann
 
Development AR App with C++ and Windows Holographic API
Development AR App with C++ and Windows Holographic APIDevelopment AR App with C++ and Windows Holographic API
Development AR App with C++ and Windows Holographic APIYEONG-CHEON YOU
 
Single-page Application
Single-page ApplicationSingle-page Application
Single-page ApplicationSangmin Yoon
 
Angular2 가기전 Type script소개
 Angular2 가기전 Type script소개 Angular2 가기전 Type script소개
Angular2 가기전 Type script소개Dong Jun Kwon
 
Node.js 20버전에 변경된 점들.pdf
Node.js 20버전에 변경된 점들.pdfNode.js 20버전에 변경된 점들.pdf
Node.js 20버전에 변경된 점들.pdfSeung kyoo Park
 

Ähnlich wie Node.js intro (20)

[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rd[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rd
 
Vue 뽀개기 1장 환경설정 및 spa설정
Vue 뽀개기 1장 환경설정 및 spa설정Vue 뽀개기 1장 환경설정 및 spa설정
Vue 뽀개기 1장 환경설정 및 spa설정
 
요즘웹개발
요즘웹개발요즘웹개발
요즘웹개발
 
Node.js 팀 스터디 발표자료.
Node.js 팀 스터디 발표자료.Node.js 팀 스터디 발표자료.
Node.js 팀 스터디 발표자료.
 
병렬 프로그래밍
병렬 프로그래밍병렬 프로그래밍
병렬 프로그래밍
 
빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x
 
Web assembly 맛보기
Web assembly 맛보기Web assembly 맛보기
Web assembly 맛보기
 
Spring Boot 1
Spring Boot 1Spring Boot 1
Spring Boot 1
 
Tensorflow service & Machine Learning
Tensorflow service & Machine LearningTensorflow service & Machine Learning
Tensorflow service & Machine Learning
 
Internship backend
Internship backendInternship backend
Internship backend
 
Softcon_하재권_Only javascript의 하이브리드 앱서버 도전기
Softcon_하재권_Only javascript의 하이브리드 앱서버 도전기Softcon_하재권_Only javascript의 하이브리드 앱서버 도전기
Softcon_하재권_Only javascript의 하이브리드 앱서버 도전기
 
Introduce Yeoman
Introduce YeomanIntroduce Yeoman
Introduce Yeoman
 
Node week1
Node week1Node week1
Node week1
 
Electron forge
Electron forgeElectron forge
Electron forge
 
Laravel 로 배우는 서버사이드 #2
Laravel 로 배우는 서버사이드 #2Laravel 로 배우는 서버사이드 #2
Laravel 로 배우는 서버사이드 #2
 
ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자ant로 안드로이드 앱을 자동으로 빌드하자
ant로 안드로이드 앱을 자동으로 빌드하자
 
Development AR App with C++ and Windows Holographic API
Development AR App with C++ and Windows Holographic APIDevelopment AR App with C++ and Windows Holographic API
Development AR App with C++ and Windows Holographic API
 
Single-page Application
Single-page ApplicationSingle-page Application
Single-page Application
 
Angular2 가기전 Type script소개
 Angular2 가기전 Type script소개 Angular2 가기전 Type script소개
Angular2 가기전 Type script소개
 
Node.js 20버전에 변경된 점들.pdf
Node.js 20버전에 변경된 점들.pdfNode.js 20버전에 변경된 점들.pdf
Node.js 20버전에 변경된 점들.pdf
 

Mehr von Chul Ju Hong

Rails antipattern-public
Rails antipattern-publicRails antipattern-public
Rails antipattern-publicChul Ju Hong
 
Rails antipatterns
Rails antipatternsRails antipatterns
Rails antipatternsChul Ju Hong
 
게임 클론하기
게임 클론하기게임 클론하기
게임 클론하기Chul Ju Hong
 
안드로이드 세미나 2
안드로이드 세미나 2안드로이드 세미나 2
안드로이드 세미나 2Chul Ju Hong
 
안드로이드 세미나
안드로이드 세미나안드로이드 세미나
안드로이드 세미나Chul Ju Hong
 
협업 툴 사용법
협업 툴 사용법협업 툴 사용법
협업 툴 사용법Chul Ju Hong
 

Mehr von Chul Ju Hong (9)

Mixture model
Mixture modelMixture model
Mixture model
 
Digit recognizer
Digit recognizerDigit recognizer
Digit recognizer
 
Naive ML Overview
Naive ML OverviewNaive ML Overview
Naive ML Overview
 
Rails antipattern-public
Rails antipattern-publicRails antipattern-public
Rails antipattern-public
 
Rails antipatterns
Rails antipatternsRails antipatterns
Rails antipatterns
 
게임 클론하기
게임 클론하기게임 클론하기
게임 클론하기
 
안드로이드 세미나 2
안드로이드 세미나 2안드로이드 세미나 2
안드로이드 세미나 2
 
안드로이드 세미나
안드로이드 세미나안드로이드 세미나
안드로이드 세미나
 
협업 툴 사용법
협업 툴 사용법협업 툴 사용법
협업 툴 사용법
 

Node.js intro

  • 1. Hello, Node.js Chulju, Hong PoolC
  • 2. Node.js “소개” 일뿐 뭔가 끄적이고 싶다면 Try it yourself 저도 잘 몰라요 포교할 뿐
  • 3. 단순한 웹 프레임워크 같은게 아니다! Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, s c a l a b l e n e t w o r k applications. 스케일러블한 네트워크 어플리케이션! 강력해보인다!
  • 4. 흔한 오해 Q : Node.js 가 뭔지 아세요? A : django 같이 웹 사이트 만들 때 쓰는거 아니에요? 앞에서도 썼지만 웹 프레임워크와는 다르다! 웹 프레임워크와는! 물론 만들 수는 있다  
  • 5. Node.js 를 이용해서 Command Line Application Web Server TCP Server Bot 왠만한 (I/O가 많은 것이라도) Server 등을 만들 수 있답니다
  • 6. 굳이 Node.js를 써서 만들어야하나? •  Frontend와 Backend가 javascript로 대동단결!   •  강력한 V8 엔진 기반 크롬에 쓰는 그거 •  Event-driven, non-blocking I/O •  다른 걸 가져다 쓰거나 자신의 모듈을 게시하기 매우 쉬운 시스템 날 가져요 npm 엉엉
  • 7. Node.js 시작하기 http://nodejs.org Click!  
  • 8. 길었다, 서론 본다! Hello, World! console.log(“Hello, World!”); 웹 프로그래밍 하셨으면 다들 아시잖아요 익숙한 자바스크립트 하지만 IE에서 하면 어떻게 될까
  • 9. 길었다, 서론 본다! Hello, World! 그 코드를 hello.js 로 저장하고 Command Line에 node hello.js 그리고 Hello, World! 가 출력된다 참 쉽죠?
  • 10. HTTP Server 만들기 Method 1 : 직접 만든다 (Node.js http 모듈을 이용) var http = require('http'); var server = http.createServer( function(req, res) { var body = 'Hello, World!'; res.writeHead(200, { 'Content-Length': body.length, 'Content-Type': 'text/plain' }); res.end(body); } ); server.listen(3000);
  • 11. HTTP Server 만들기 Method 2 : 만들어진 것들을 가져다쓴다 (Express, etc.) 가져다쓰는게 편합니다 global ex)  express   $  npm  install  -­‐g  express   $  express  myapp   $  cd  myapp    &&  npm  install   $  node  app  
  • 12. Node 모듈을 시작하는 방법 드디어 등장하는 npm > npm init // package.json 을 생성함 {      "name":  "testapp",      "version":  "0.0.0",      "descrip@on":  "ERROR:  No  README.md  file  found!",      "main":  "index.js",      "scripts":  {          "test":  "echo  "Error:  no  test  specified"  &&  exit  1"      },      "repository":  "",      "author":  "",      "license":  "BSD"   }  
  • 13. 모듈 가져다쓰기 > 필요한 모듈 찾기 Google  it  :  node  {what  you  want}   hTps://npmjs.org/     > 모듈 깔기 npm  install  {module  name}  {-­‐-­‐save}   > 앱에 모듈 가져오기 var  module  =  require(‘module  name’)  
  • 14. 적절한 모듈들 몇 가지 안 써보긴 했지만 여기도 참고 express,  socket.io,  mongoose,  phantom.js,  etc.   웹 프레임워크 MongoDB for Node.js Full web stack 웹 소켓 흉내 No browser required
  • 15. 잉여 예제 모듈 없이 하는 것에 대해서는 이 곳을 참조 - 콘솔에 colored text 출력하기 > 적절한 구글링을 통해 colors 라는 모듈을 발견 > 모듈 페이지로 가서 사용법을 확인 보통 Github등의 repository의 readme에 있음 > 자기 앱 디렉터리에서 npm install colors를 입력 var colors = require(‘colors’); console.log(‘Hello, World!’.rainbow); 참 쉽죠?
  • 16. 모듈 만들기 > 모듈 작성하기 func@on  foo()  {    //blahblah   }   > 모듈 내보내기 exports.foo  =  foo;   > 내 모듈 가져오기 var  my_module  =  require(‘./mymodule’);   mymodule.foo();   위의 내용이 같은 폴더의 mymodule.js에 저장되어 있을 때
  • 17. 동기 비동기 프로그래밍 다른 패러다임 기존에 써왔던 방식 int val = getValueSync(); 왜 C++? 익숙해져야할 방식 getValueAsync(function(val) { 콜백으로 값을 받아내서 이용 console.log(val); });
  • 18. 비동기 프로그래밍 을 접한 사람들의 실수? 동기 -> 비동기로의 이식 int val1 = getValue1(); int val2 = getValue2(); … int val100 = getValue100(); print(val1 + val2); function getValue1( function(val) { var val1 = val; function getValue2( function(val) { var val2 = val; … … } ); } );
  • 20. 자잘한 팁 node.js 웹 어플리케이션을 작성할 때, 코드 수정 -> 앱 재시작이 너무 귀찮아요 supervisor 라는 모듈을 사용해봅시다. (https://github.com/isaacs/node-supervisor) javascript 쓰기 싫어요 뭐라할 말은 없는데 coffeescript, dart 같은걸 끼얹어본다던가.. Opal(http://opalrb.org/) 같은 것도 있어요 (Ruby to javascript compiler)