Node.js 튜토리얼 – 초보자를위한 완전한 가이드



이 Node.js 튜토리얼은 Node.js의 기본 아키텍처, 작업 및 다양한 모듈에 대해 설명합니다. 또한 Node.js 및 Express.js의 실제 구현을 보여줍니다.

Node.js에 대해 들어 본 적이 있다면 이것이 가장 눈에 띄고 강력한 JavaScript 프레임 워크 중 하나라는 것을 알고있을 것입니다. 출시 이후 IT 시장에서 계속해서 목을 졸라 매고 있습니다. 새롭고 생생한 소개와 함께 처럼 , , Meteor 등 Node.js의 인기는 결코 멈추지 않는 것 같습니다. 이유가 궁금하세요? 이 Node.js 자습서의 도움으로 이에 대한 완전한 통찰력을 제공 할 것입니다. 따라서 Node.js와 사랑에 빠질 준비를하십시오.

이 Node.js 튜토리얼에서는 아래 주제에 대해 논의 할 것입니다.





Node.js 란 무엇입니까?

Node.js는 Chrome의 V8 자바 스크립트 엔진 JavaScript를 네이티브 기계어 코드로 직접 컴파일합니다. 서버 측 웹 애플리케이션을 생성하는 데 사용되는 경량 프레임 워크이며 일반적인 서버 측 기능을 제공하도록 JavaScript API를 확장합니다. 일반적으로 대규모 애플리케이션 개발, 특히 비디오 스트리밍 사이트, 단일 페이지 애플리케이션 및 기타 웹 애플리케이션에 사용됩니다. Node.js 만든다 데이터 집약적 인 실시간 애플리케이션에 적합한 이벤트 기반 비 차단 I / O 모델 사용.

다른 프로그래밍 언어와 마찬가지로 node.js는 패키지와 모듈을 사용합니다. 이들은 다양한 기능을 포함하고 있으며 npm (노드 패키지 관리자)에서 우리 코드로 가져 와서 프로그램에서 활용되는 라이브러리입니다. Node.js를 정의하는 몇 가지 주요 기능은 다음과 같습니다.



Node.js의 기능

  1. 오픈 소스
    Node.js는 거대한 커뮤니티에서 지원하는 오픈 소스 프레임 워크 MIT 라이선스입니다. 커뮤니티는 매우 활발하게 Node.js 애플리케이션에 새로운 기능을 추가하는 데 기여했습니다.
  2. 간단하고 빠름
    Node.js는 Google 크롬의 V8 자바 스크립트 엔진을 기반으로하므로 라이브러리는 빠른 코드 실행이 가능합니다.
  3. 비동기
    Node.js의 모든 라이브러리는 비동기식이므로 Node.js 기반 서버는 API가 응답을 다시 보내고 다음 API로 이동할 때까지 기다리지 않습니다.
  4. 높은 확장 성
    이벤트 메커니즘으로 인해 Node.js는 확장 성이 뛰어나며 비 차단 응답으로 서버를 지원합니다.
  5. 단일 스레드
    이벤트 루핑의 도움으로 Node.js는 단일 스레드 모델을 따를 수 있습니다. 이를 통해 단일 프로그램이 여러 요청을 처리 할 수 ​​있습니다.
  6. 버퍼링 없음
    Node.js 애플리케이션의 주요 기능 중 하나는 데이터를 버퍼링하지 않는다는 것입니다.
  7. 교차 플랫폼
    Node.js는 Windows, MAC 및 Linux와 같은 다양한 플랫폼에서 쉽게 빌드하고 배포 할 수 있습니다.

이제 더 나아가 브라우저에 실제 코드를 배포하는 방법을 살펴 보겠습니다. 그러나 그 전에 시스템에 다운로드하여 설치해야합니다. 내 다른 기사를 참조하여 완전한 것을 알 수 있습니다. Node.js 설치 프로세스 .

이제이 Node.js 자습서에서 더 나아가 Node.js의 가장 중요한 구성 요소 인 npm에 대해 설명하겠습니다.

NPM (노드 패키지 관리자)

NPM은 이름에서 알 수 있듯이 Node.js 패키지 / 모듈의 패키지 관리자 인 Node Package Manager의 약자입니다. Node 버전 0.6.0부터. 이후에는 노드 설치에 npm이 기본값으로 추가되었습니다. npm을 명시 적으로 설치하는 번거 로움을 덜어줍니다.



NPM은 기본적으로 두 가지 방법으로 도움이됩니다.

sas 프로그래밍은 무엇에 사용됩니까?
  1. 프로젝트에서 쉽게 다운로드하고 사용할 수있는 node.js 패키지 / 모듈에 대한 온라인 저장소를 제공하고 호스팅합니다. 여기에서 찾을 수 있습니다. npmjs.com
  2. 다양한 Node.js 패키지 설치, Node.js 버전 및 패키지 종속성 관리를위한 명령 줄 유틸리티를 제공합니다.

하지만 이제이 모듈이 정확히 무엇인지, 그리고 Node.js 애플리케이션을 빌드하는 데 어떻게 도움이되는지 궁금 할 것입니다. 이 Node.js 튜토리얼의 다음 섹션에서는 Node.js 모듈에 대한 완전한 통찰력을 제공 할 것입니다.

Node.js 모듈

Node.js의 모듈은 단일 또는 여러 JS 파일에 번들로 제공되는 다양한 기능을 나타냅니다. 이러한 모듈에는 고유 한 컨텍스트가 있으므로 다른 모듈의 범위를 방해하거나 오염시키지 않습니다.

이러한 모듈은 코드 재사용을 가능하게하고 사용 편의성을 향상시킵니다. Node.js는 기본적으로 세 가지 유형의 모듈을 제공합니다.

  1. 핵심 모듈
  2. 로컬 모듈
  3. 타사 모듈

핵심 모듈

Node.js는 매우 경량 프레임 워크, 핵심 모듈은 절대 최소 기능을 번들로 제공합니다. 이러한 모듈은 일반적으로 노드 프로세스가 실행을 시작할 때로드됩니다. 코드에서 사용하기 위해 이러한 핵심 모듈을 가져 오기만하면됩니다.

아래에 몇 가지 중요한 핵심 모듈을 나열했습니다.

핵심 모듈 기술
http Node.js HTTP 서버를 만드는 데 필요한 클래스, 메서드 및 이벤트를 포함합니다.
URL Node에서 URL 확인 및 구문 분석을위한 메서드를 포함합니다.
쿼리 문자열 Node의 쿼리 문자열을 처리하는 메서드를 포함합니다.
통로 파일 경로를 처리하는 방법을 포함합니다.
fs 파일 I / O 작업을위한 클래스, 메서드 및 이벤트 포함
유능한 프로그래머에게 유용 할 수있는 유틸리티 함수 포함

아래 코드를 사용하여 핵심 모듈을로드 할 수 있습니다.

var module = require ( 'module_name')

이제 '로컬 모듈'이 무엇인지 살펴 보겠습니다.

로컬 모듈

Node.js의 로컬 모듈은 응용 프로그램에서 사용자 / 개발자가 로컬로 생성 한 사용자 지정 모듈입니다. 이러한 모듈에는 NPM을 사용하여 Node.js 커뮤니티에서 쉽게 배포 할 수있는 개별 파일 및 폴더에 번들로 제공되는 다양한 기능이 포함될 수 있습니다.

이러한 모듈은 핵심 모듈과 유사한 방식으로로드됩니다. 기본 예를 사용하여 수행하는 방법을 보여 드리겠습니다.

사용자 정의 / 로컬 module.js 파일 만들기

var detail = {name : function (name) {console.log ( 'Name :'+ name)}, domain : function (domain) {console.log ( 'Domain :'+ domain)}} module.exports = detail

기본 애플리케이션 파일에 모듈 파일을 포함하십시오.

var myLogModule = require ( './ Local_module.js') myLogModule.name ( 'Edureka') myLogModule.domain ( 'Education')

이제 아래 명령을 사용하여 이러한 파일을 실행할 수 있습니다.

node application.js

이제 외부 모듈이 무엇인지 보여 드리겠습니다.

외부 모듈

당신은 외부 또는 3를 사용할 수 있습니다rd파티 모듈은 NPM을 통해서만 다운로드 할 수 있습니다. 이러한 모듈은 일반적으로 다른 개발자가 개발하며 무료로 사용할 수 있습니다. 최고의 외부 모듈은 express, react, gulp, mongoose, mocha 등입니다.

타사 모듈 전역로드 :

npm 설치 -g

기본 애플리케이션 파일에 모듈 파일을 포함합니다.

npm 설치 --save

JSON 파일

그만큼 package.json 파일 Node.js는 전체 애플리케이션의 핵심입니다. 기본적으로 프로젝트의 메타 데이터를 포함하는 매니페스트 파일입니다. 따라서이 파일을 이해하고 작업하는 것은 성공적인 Node 프로젝트 개발을 위해 매우 중요합니다.

package.json 파일은 일반적으로 응용 프로그램의 메타 데이터로 구성되며 다음 두 범주로 더 분류됩니다.

  1. 메타 데이터 속성 식별 : 이것은 프로젝트 이름, 현재 모듈 버전, 라이센스, 프로젝트 작성자, 프로젝트 설명 등과 같은 속성으로 구성됩니다.
  1. 파일에 직접 쓰기 : 필요한 정보를 package.json 파일에 직접 작성하고 프로젝트에 포함 할 수 있습니다.

이제 이미 Node JS 애플리케이션의 다양한 구성 요소에 익숙해졌습니다. 이 Node.js 튜토리얼의 다음 섹션에서는 실습을 시작할 수 있도록 몇 가지 Node Js 기본 사항을 공유 할 것입니다.

Node.js 기본 사항

Node.js는 JavaScript 프레임 워크이므로 JavaScript 구문을 사용합니다. 자바 스크립트를 자세히 배우고 싶다면 여기를 참고하세요. . 지금은 다음과 같은 Node.js 기본 사항을 살펴 보겠습니다.

데이터 유형

다른 프로그래밍 언어와 마찬가지로 Node.js에는 다양한 데이터 유형이 있으며 이는 기본 및 비 기본 데이터 유형으로 더 분류됩니다.

기본 데이터 유형은 다음과 같습니다.

  1. 번호
  2. 부울
  3. 없는
  4. 찾으시는 주소가 없습니다

비 원시적 데이터 유형은 다음과 같습니다.

  1. 목적
  2. 데이트
  3. 정렬

변수

변수는 프로그램 과정에서 변할 수있는 값을 보유하는 개체입니다. Node.js에서 변수를 만들려면 예약 된 키워드 var를 사용해야합니다. 컴파일러가 자동으로 선택하므로 데이터 유형을 할당 할 필요가 없습니다.

통사론:

var varName = 값

연산자

Node.js는 다음 연산자를 지원합니다.

연산자 유형 연산자
산수 +,-, /, *, %, ++,-
할당 =, + =,-=, * =, / =, % =
가정 어구 =?
비교 ==, === ,! = ,! ==,>,> =,<, <=,
논리적 &&, || ,!
비트 &, |, ^, ~,<>, >>>

기능

Node.js의 함수는 이름이 있고 특정 작업을 수행하기 위해 작성된 코드 블록입니다. 그것을 만들려면 키워드 함수를 사용해야합니다. 함수는 일반적으로 2 단계 프로세스입니다. 첫 번째는 함수를 정의하고 두 번째는 함수를 호출하는 것입니다. 다음은 함수를 만들고 호출하는 구문입니다.

예:

// 함수 정의 function display_Name (firstName, lastName) {alert ( 'Hello'+ firstName + ''+ lastName)} // 함수 호출 display_Name ( 'Park', 'Jimin')

사물

객체는 속성 및 메서드 측면에서 여러 값을 보유 할 수있는 기본이 아닌 데이터 유형입니다. Node.js 객체는 클래스 개념이 없으므로 독립형 엔티티입니다. 두 가지 방법으로 개체를 만들 수 있습니다.

  1. 개체 리터럴 사용
  2. 개체 생성자 사용

예:

// 속성과 메서드가있는 객체 var employee = {// properties firstName : 'Minho', lastName : 'Choi', age : 35, salary : 50000, // method getFullName : function () {return this.firstName + '' + this.lastName}}

파일 시스템

물리적 파일 시스템에 액세스하기 위해 Node.js는 fs 기본적으로 모든 비동기 및 동기 파일 I / O 작업을 처리하는 모듈입니다. 이 모듈은 아래 명령을 사용하여 가져옵니다.

var fs = require ( 'fs')

파일 시스템 모듈의 일반적인 용도는 다음과 같습니다.

  • 파일 읽기
    1. fs.readFile ()
var http = require ( 'http') var fs = require ( 'fs') http.createServer (function (req, res) {fs.readFile ( 'script.txt', function (err, data) {res.writeHead ( 200, { 'Content-Type': 'text / html'}) res.write (data) res.end ()})}). listen (8080)
  • 파일 생성
    1. appendFile ()
    2. 열다()
    3. writeFile ()
  • 파일 업데이트
    1. fs.appendFile ()
    2. fs.writeFile ()
  • 파일을 지우시오
    1. fs.unlink ()
  • 파일 이름 바꾸기
    1. fs.rename ()

따라서 이러한 명령을 사용하면 파일에 필요한 모든 작업을 거의 수행 할 수 있습니다. 이제이 Node.js 자습서를 통해 더 나아가 이벤트가 무엇이며 Node.js에서 어떻게 처리되는지 살펴 보겠습니다.

이벤트

이미 언급했듯이 Node.js 애플리케이션은 단일 스레드 및 이벤트 기반입니다. Node.js는 이벤트 기반이므로 동시성을 지원하므로 이벤트 및 콜백과 같은 개념을 사용합니다. 비동기 함수 호출은 Node.js가 애플리케이션 전체에서 동시성을 유지하도록 도와줍니다.

기본적으로 Node.js 애플리케이션에는 이벤트를 대기하고 수신하는 메인 루프가 있으며 이벤트가 완료되면 즉시 콜백 함수를 시작합니다.

아래 다이어그램은 Node.js에서 이벤트가 구동되는 방식을 나타냅니다.

스레드 모델-Node.js 튜토리얼-Edureka

여기서 주목해야 할 한 가지는 이벤트가 콜백 함수와 비슷해 보이지만 차이점은 기능에 있다는 것입니다. 비동기 함수가 결과를 반환하면 콜백이 호출되는 반면 이벤트 처리는 관찰자 패턴에서 완전히 작동합니다. 그리고 Node.js에서는 이벤트를 수신하는 메서드를 관찰자라고합니다. 이벤트가 트리거되는 순간 리스너 기능이 자동으로 실행되기 시작합니다. 이벤트 모듈 및 EventEmitter 클래스는 이벤트 리스너와 이벤트를 바인딩하는 데 사용되는 여러 내장 이벤트를 제공합니다. 아래에 이에 대한 구문을 작성했습니다.

이벤트 리스너에 이벤트 바인딩

// 이벤트 모듈 가져 오기 var my_Events = require ( 'events') // eventEmitter 객체 생성 var my_EveEmitter = new my_Events.EventEmitter ()

이벤트 처리기를 이벤트에 바인딩

자바의 힘
// 이벤트 및 이벤트 핸들러 바인딩 my_EveEmitter.on ( 'eventName', eventHandler)

이벤트 실행

// 이벤트 발생 my_EveEmitter.emit ( 'eventName')

이제이 Node.js 이벤트 섹션에서 논의한 것들을 구현해 보겠습니다.아래 코드는 Node.js에서 이벤트 실행의 간단한 표현을 보여줍니다.

var emitter = require ( 'events'). EventEmitter function iterateProcessor (num) {var emt = new emitter () setTimeout (function () {for (var i = 1 i & lt = num i ++) {emt.emit ( 'BeforeProcess' , i) console.log ( 'Processing Iteration :'+ i) emt.emit ( 'AfterProcess', i)}}, 5000) return emt} var it = iterateProcessor (5) it.on ( 'BeforeProcess', function ( info) {console.log ( 'Starting the process for'+ info)}) it.on ( 'AfterProcess', function (info) {console.log ( 'Finishing processing for'+ info)

이 Node.js 자습서의 다음 섹션에서는 Node.js의 가장 중요한 모듈 중 하나 인 HTTP 모듈에 대한 통찰력을 제공합니다.

HTTP 모듈

일반적으로 Node.js는 서버 기반 애플리케이션 개발에 사용됩니다. 그러나 모듈을 사용하면 클라이언트 요청에 응답 할 수있는 웹 서버를 쉽게 만들 수 있습니다. 따라서 Web Module이라고도하며 서버 요청을 처리 할 때 Node.js를 용이하게하는 HTTP 및 요청과 같은 모듈을 제공합니다.

아래 코드를 작성하여 Node.js 애플리케이션에이 모듈을 쉽게 포함 할 수 있습니다.

var http = require ( 'http')

아래에 Node.js에서 웹 서버가 어떻게 개발되는지 보여주는 코드를 작성했습니다.

// http 라이브러리 호출 var http = require ( 'http') var url = require ( 'url') // 서버 생성 var server = http.createServer (function (req, res) {// 콘텐츠 헤더 설정 res.writeHead ( 200, ( 'Content-Type', 'text / html')) var q = url.parse (req.url, true) .query var txt = q.year + ''+ q.month // 응답에 문자열 보내기 res.end (txt)}) // 8082를 서버 수신 포트로 할당 server.listen (8082)

이 Node.js 튜토리얼의 다음 섹션에서는 서버 측 웹 애플리케이션 개발에 많이 사용되는 Express.js에 대해 이야기 할 것입니다.

Express.js

Express.js는 Node.js 위에 구축 된 프레임 워크로 서버 측 애플리케이션에서 서버와 경로 간의 데이터 흐름 관리를 용이하게합니다. 웹 및 모바일 애플리케이션 개발에 필요한 다양한 기능을 제공하는 가볍고 유연한 프레임 워크입니다.

Express.js는 Node.js의 미들웨어 모듈에서 개발되었습니다. 잇다 . 연결 모듈은 추가로 http Node.js와 통신하는 모듈. 따라서 연결 기반 미들웨어 모듈로 작업하는 경우 Express.js와 쉽게 통합 할 수 있습니다.

뿐만 아니라 Express.js의 주요 장점은 다음과 같습니다.

  • 웹 애플리케이션 개발을 더 빠르게합니다.
  • 단일 페이지, 다중 페이지 및 하이브리드 유형의 모바일 및 웹 애플리케이션 구축에 도움이됩니다.
  • Express는 Jade와 EJS라는 두 가지 템플릿 엔진을 제공합니다.
  • Express는 MVC (Model-View-Controller) 아키텍처를 따릅니다.
  • MongoDB, Redis, MySQL과 같은 데이터베이스와 통합
  • 오류 처리 미들웨어를 정의합니다.
  • 응용 프로그램에 대한 구성 및 사용자 정의를 쉽게 단순화합니다.

이러한 모든 기능을 통해 Express는 MEAN 스택의 백엔드 부분을 담당합니다. Mean Stack은 동적 웹 사이트 및 웹 애플리케이션을 구축하는 데 사용되는 오픈 소스 JavaScript 소프트웨어 스택입니다. 여기, 평균 약자 미디엄 ongoDB, IS xpress.js, ngularJS 및 ode.js.

이제 Express.js가 Node.js와 함께 작동하여 작업을 용이하게하는 방법을 이해하는 간단한 예제를 살펴 보겠습니다. 그러나 Express.js로 작업을 시작하기 전에 시스템에 설치해야합니다.

Express.js를 전역으로 설치하려면 아래 명령을 사용할 수 있습니다.

npm 설치 -g 익스프레스

또는 프로젝트 폴더에 로컬로 설치하려면 아래 명령을 실행해야합니다.

npm install express --save

모든 준비를 마쳤으므로 이제 실제 구현으로 바로 이동하겠습니다. 여기에서는 Node.js와 Express.js를 사용한 간단한 사용자 인증 애플리케이션을 보여 드리겠습니다.

Node.js 자습서 Express.js를 사용한 단계별 애플리케이션 개발

이를 위해 아래 파일이 필요합니다.

  • package.json
  • script.js
  • 견해
    • index.jade
    • login.jade
    • secure.jade
    • 무단 .jade
    • welcome.jade
  • lib
    • route.js

자, 시작하겠습니다. package.json .

{ 'author': 'Edureka', 'name': 'Express_Demo', 'description': 'Express with Node.js', 'version': '0.0.0', 'scripts': { 'start': 'node script.js '},'engines ': {'node ':'~ 0.4.12 '},'dependencies ': {'connect-flash ':'^ 0.1.1 ','cookie-parser ':'^ 1.4 .3 ','express ':'^ 3.21.2 ','jade ':'^ 0.20.3 ','req-flash ':'0.0.3 '},'devDependencies ': {}}

다음으로 script.js .

var express = require ( 'express') var http = require ( 'http') var port = 8999 var app = express () const flash = require ( 'connect-flash') var cookieParser = require ( 'cookie-parser') var server = http.createServer (app) function checkAuth (req, res, next) {console.log ( 'checkAuth'+ req.url) // 로그인하지 않은 사용자에게는 / secure를 제공하지 않음 if (req.url = == '/ secure'&& (! req.session ||! req.session.authenticated)) {res.render ( 'unauthorised', {status : 403}) return} next ()} app.use (flash () ) app.use (cookieParser ()) app.use (express.session ({secret : 'example'})) app.use (express.bodyParser ()) app.use (checkAuth) app.use (app.router) app.set ( 'view engine', 'jade') app.set ( 'view options', {layout : false}) require ( './ lib / routes.js') (app) app.listen (port) console .log ( '노드 수신 대기 포트 % s', 포트)

이제 view라는 폴더를 생성합니다. 그 아래에 다양한 페이지 뷰를 담당 할 jade 파일을 추가합니다. 생성해야하는 첫 번째보기 파일은 index.jade .

!!! 5 html (lang = 'en') head title 사용자 인증 예제 body h1 center Express h3를 사용한 인증 데모 h4로 이동 ul li : a (href = '/ secure') 보안 콘텐츠 li : a (href = '/ welcome') 환영 페이지 li : a (href = '/ logout') 로그 아웃

이제 login.jade 파일.

C ++ goto 라인
!!! 5 html (lang = 'en') head title Express 인증 예시 body h1 center이 Express 인증 예시 center p 사용 사용자 사용자 이름 및 통과하다 암호. form (method = 'post') p label (for = 'username') 이메일 주소 입력 (type = 'text', name = 'username', class = 'form-control', id = 'exampleInputPassword1', placeholder = ' 이메일 ', style ='width : 400px ') p center label (for ='password ') 비밀번호 입력 (type ='password ', name ='password ', class ='form-control ', id ='exampleInputPassword1 ', placeholder = 'Password', style = 'width : 400px') p center 제출-플래시의 각 메시지 h4 (style = 'color : red') # {message}

다음 단계는 welcome.jade .

!!! 5 html (lang = 'en') head title 사용자 인증 예제 body h1 center Edureka Tutorial에 오신 것을 환영합니다!

다음으로 secure.jade 파일.

!!! 5 html (lang = 'en') head title Express 인증 예제 body h1 center 안녕하세요, 안전한 사용자입니다. p ul li : a (href = '/ secure')로 이동합니다. 보안 콘텐츠 li : a (href = '/ welcome') 시작 페이지 li : a (href = '/ logout') 로그 아웃

이제 무단 .jade 파일.

!!! 5 html (lang = 'en') head title 사용자 인증 예제 body h1 center Unauthorized p이 페이지를 볼 수있는 권한이 없습니다. p 제발 ' 계속하다

이제 폴더를 만들고 이름을 지정해야합니다. lib . 이제 route.js 모든 페이지를 매핑 할 파일.

var util = require ( 'util') module.exports = function (app) {app.get ( '/', function (req, res, next) {res.render ( 'index')}) app.get ( ' / welcome ', function (req, res, next) {res.render ('welcome ')}) app.get ('/ secure ', function (req, res, next) {res.render ('secure ')} ) app.get ( '/ login', function (req, res, next) {res.render ( 'login', {flash : req.flash ()})}) app.post ( '/ login', function ( req, res, next) {// (req.body.username && req.body.username === 'user'&& req.body.password && req.body.password === 'pass') {req.session.authenticated = true res.redirect ( '/ secure')} else {req.flash ( 'error', 'Username and password are invalid') res. redirect ( '/ login')}}) app.get ( '/ logout', function (req, res, next) {delete req.session.authenticated res.redirect ( '/')})}

이제이 코드를 직접 실행하려면 여기에서 다운로드 할 수 있습니다. Node.js 튜토리얼 PDF .

이것으로이 Node.js 튜토리얼을 마칩니다. Node.js의 개념을 처음부터 설명 할 수 있었으면합니다.

이“Node.js Tutorial ”관련, 체크 아웃 전 세계에 250,000 명 이상의 만족 한 학습자 네트워크를 보유한 신뢰할 수있는 온라인 학습 회사 인 Edureka에서 작성했습니다.

질문이 있으십니까? 이 Node.js 튜토리얼의 댓글 섹션에 언급 해 주시면 다시 연락 드리겠습니다.