2009 년 JSCONF 컨퍼런스에서 Ryan Dahl이라는 젊은 프로그래머는 사람들에게 자신이 작업중 인 프로젝트 인 Google V8 엔진을 기반으로 한 JavaScript 실행 플랫폼으로 일련의 이벤트 루프 및 낮은 IO 응용 프로그램 프로그래밍 인터페이스 (API)를 제공했습니다. 다른 서버 측 플랫폼과 달리 JavaScript는 이벤트 중심의 IO로 태어 났 으며이 프로젝트는 이벤트 중심 응용 프로그램 작성의 복잡성을 크게 줄여서 빠르게 성장하여 놀라운 속도로 인기를 얻었으며 실제 프로젝트에 적용되었습니다. (Jack :이 번역은 신뢰할 수 있고 원본 텍스트가 아닙니다.이 프로젝트는 모든 I/O 프리미티브가 이벤트 중심이되어 주변에 방법이 없었던 다른 서버 측 JavaScript 플랫폼과는 다릅니다.)
이 프로젝트는 Node.js로 명명되었으며 개발자는 노드를 호출하는 데 사용됩니다. 노드는 순수한 이벤트 중심의 비 블로킹 툴킷을 제공하여 동시 응용 프로그램을 구축합니다.
참고 : 노드를 사용하면 빠르고 확장 가능한 네트워크 서비스를 쉽게 구축 할 수 있습니다.
Ryan Dahl이 소개 한 이후 Node는 업계로부터 광범위한 관심을 끌었습니다. 그들은 노드로 빠르고 확장 가능한 네트워크 서비스를 배포하기 시작했습니다. 노드는 너무 매력적입니다.
한편으로 JavaScript로 인해 JavaScript는이 지구상에서 가장 널리 사용되는 프로그래밍 언어입니다. 대부분의 웹 프로그래머는 브라우저 측에서 JavaScript를 사용했으며 서버 측은 매우 자연스러운 확장입니다.
반면, 노드는 몸집이 작고 귀엽기 때문에 노드의 핵심 함수 세트는 매우 작으며 기존 API는 매우 세련되어 개발자의 복잡성을 최소화합니다. 보다 복잡한 응용 프로그램을 구축하려면 원하는 타사 모듈을 선택하고 설치하면됩니다.
또한 노드가 매력적인 이유도 있습니다. 시작하기 쉽고 몇 분 안에 다운로드하여 설치하여 실행할 수 있습니다.
일반적으로 Windows, Linux, Macintosh 및 Solaris를 지원하는 공식 웹 사이트 (http://nodejs.org)의 단계에 따라 노드를 설치할 수 있습니다.
Windows에 노드를 설치하십시오
노드는 버전 0.6.0 이후 Windows를 지원합니다. Windows에 노드를 설치하려면 http://nodejs.org/#download에서 Node-v*.msi를 다운로드 한 다음 두 번 클릭하여 실행하십시오. 그런 다음 그림 1-1과 유사한 보안 대화 상자가 발생할 수 있습니다.
그림 1-1
"실행"버튼을 클릭하면 다운로드가 완료되면 다른 보안 대화 상자가 나타나면 (그림 1-2) 작동 여부를 상기시킵니다.
그림 1-2
동의하면 노드 설치 마법사가 나타납니다 (그림 1-3). Node 설치 시작을 통해 다음을 클릭하면 설치가 짧은 시간 내에 완료됩니다! 그림 1-4를 참조하십시오
그림 1-3
그림 1-4
Mac OS X에 설치하십시오
Mac OS X를 사용하는 경우 설치 마법사를 사용하여 노드를 설치할 수 있습니다. 먼저 http://nodejs.org/#download로 이동하여 Node-v*.pkg를 다운로드하십시오. 다운로드 후 두 번 클릭하여 실행하십시오. 설치 마법사의 첫 번째 대화 상자가 표시됩니다. 그림 1-5를 참조하십시오.
그림 1-5
설치하려면 "계속"을 클릭하면 마법사가 시스템 사용자의 비밀번호를 입력하도록 요청합니다. 확인하면 설치가 시작됩니다. 잠시 후 노드가 다시 설치됩니다! 그림 1-6을 참조하십시오
그림 1-6
소스 코드로 설치하십시오
UNIX 시스템을 사용하는 경우 소스 코드를 컴파일하여 설치할 수 있습니다. 먼저 설치하려는 노드 버전을 선택한 다음 해당 소스 코드를 다운로드하고 빌드, 설치 및 실행 노드를 설치해야합니다.
참고 : 노드는 여러 타사 코드베이스에 의존하지만 운 좋게도 대부분은 이미 Node 릴리스 패키지에 포함되어 있습니다. 소스 코드에서 구축을 시작하면 다음 두 가지가 필요합니다.
1.Python (버전 2.4 이상) - 노드와 함께 출시 된 빌드 도구에는 파이썬 환경이 실행되어야합니다.
2.LIBSSL -DEV- SSL/TLS 암호화를 사용하려는 경우이를 설치해야합니다. LiBSSL은 OpenSSL 도구에서 사용하는 클래스 라이브러리입니다. Linux 및 UNIX 시스템에서는 일반적으로 시스템 패키지 관리자를 사용하여 설치할 수 있습니다. LIBSSL은 Mac OS X에 사전 설치되어 있으므로 Mac OS X를 사용하는 경우 일반적으로 더 이상 LiBSSL을 설치할 필요가 없습니다.
노드 버전을 선택하십시오
공식 웹 사이트 Nodejs.org에서 다운로드 할 두 가지 노드 버전이 있습니다 : 안정 버전과 최신 버전.
노드의 경우 최소 버전 번호 비트는이 버전의 안정성을 나타내고 안정적인 버전은 짝수 숫자 (예 : 0.2, 0.4, 0.6)를 사용하고, 비 단계적 버전은 홀수 (0.1, 0.3, 0.5, 0.7)를 사용합니다.
Non-Stable 버전은 기능적으로 불안정 할뿐만 아니라 API는 후속 버전으로 변경 될 수 있으며 안정적인 버전으로 릴리스 된 API는 수정되지 않습니다. 각 안정적인 분기에 대해 새 패치에는 버그 수정뿐만 아니라 비 스틸 버전에서 API 변경도 포함됩니다.
최신 비 안정 버전에서 새로운 기능을 테스트하지 않으면 최신 안정 버전을 선택해야합니다. 비 안정 버전은 노드 코어 팀이 새로운 기능을 테스트 할 수있는 전장과 같습니다.
점점 더 많은 프로젝트와 회사가 제품에서 노드를 성공적으로 사용했지만 (공식 웹 사이트 홈페이지가 표시됨) API의 변경 사항을 비 안정 버전에서 안정적인 버전으로 인내하는 법을 배워야 할 수도 있습니다. 물론 이것은 새로운 기술을 배우는 가격입니다.
노드 소스 코드를 다운로드하십시오
이제 다운로드 할 버전을 알고 공식 웹 사이트 http://nodejs.org로 이동하여 해당 TAR 패키지를 찾은 다음 다운로드 링크를 복사하십시오. UNIX 시스템을 사용하는 경우 시스템이 WGET에 설치되었을 수 있으므로 Shell 명령으로 다운로드 할 수 있습니다.
코드 사본은 다음과 같습니다.
$ wget http://nodejs.org/dist/v0.6.1/node-v0.6.12.tar.gz
WGET가 설치되어 있지 않은 경우 CURL을 사용해야 할 수도 있습니다.
코드 사본은 다음과 같습니다.
$ curl o http://nodejs.org/dist/v0.6.1/node-v0.6.12.tar.gz
이러한 도구가 설치되지 않은 경우 브라우저 또는 로컬 네트워크를 통해 TAR 패키지를 로컬 디렉토리로 다운로드하는 다른 방법을 찾아야합니다.
(이 책의 최신 안정적인 버전의 글을 쓸 때 : 0.6.12)
구조 노드
이제 소스 코드가 있으므로 노드의 실행 파일을 빌드하는 데 사용할 수 있습니다. 먼저, 이전에 다운로드 한 TAR 패키지를 압축해야합니다.
코드 사본은 다음과 같습니다.
$ tar xfz node-v0.6.12.tar.gz
그런 다음 소스 디렉토리를 입력하십시오.
다음과 같이 코드를 복사하십시오. $ cd node-v0.6.12
구성:
다음과 같이 코드를 복사하십시오. $./configure
잘 진행되면 성공을위한 프롬프트가 표시됩니다.
다음과 같이 코드를 복사하십시오. 'Configure'가 성공적으로 완료되었습니다 (9.278S)
그런 다음 컴파일을 시작할 수 있습니다.
코드 사본은 다음과 같습니다.
$ make
컴파일 후 다음 프롬프트가 있습니다.
코드 사본은 다음과 같습니다.
성공적으로 완성 된 빌드 (0.734S)
노드를 설치하십시오
빌드되면 다음 명령을 사용하여 노드를 설치하십시오.
다음과 같이 코드를 복사하십시오. $ make install
이 작업은 노드 실행 파일을/사용자/로컬/빈/노드에 복사합니다.
권한 문제가 발생하면 명령 전에 sudo를 추가하고 루트 사용자로 실행하십시오.
코드 사본은 다음과 같습니다.
$ sudo는 설치합니다
노드를 실행하십시오
이제 노드가 실행 중이므로 Node의 명령 줄 상호 작용 인터페이스 (CLI : 명령 줄 인터페이스)를 경험하면 노드 실행 파일을 호출 할 수 있습니다.
코드 사본은 다음과 같습니다.
$ 노드
이 작업은 노드의 명령 줄 상호 작용 인터페이스를 시작하고 입력을 기다립니다. 노드가 무언가를하도록하기 위해 다음 명령을 입력하십시오.
코드 사본은 다음과 같습니다.
> console.log ( 'Hello World!');
안녕하세요 세상!
> 정의되지 않았습니다
JavaScript 스크립트 파일을 실행할 수도 있습니다. 예를 들어 Hello_world.js라는 파일을 작성하고 다음 내용을 포함합니다.
코드 사본은 다음과 같습니다.
Console.log ( 'Hello World!');
그런 다음이 스크립트의 파일 이름을 첫 번째 매개 변수 매개 변수로 사용하여 노드 실행 파일을 호출하십시오.
코드 사본은 다음과 같습니다.
$ node hello_world.js
안녕하세요 세상!
마지막으로 CTRL+D 또는 CTRL+C를 사용하여 노드 명령 줄 대화 형 인터페이스를 종료하십시오.
노드 패키지 관리자를 준비하고 사용하십시오
지금까지 노드 자체의 언어 기능과 핵심 기능 만 사용할 수 있으므로 대부분의 프로그램 플랫폼에는 타사 모듈 다운로드, 설치 및 관리 시스템이 있습니다. 노드에서는 노드 패키지 관리자 (NPM : Node Package Manager)를 사용합니다.
NPM에는 세 가지 부분이 포함되어 있습니다. 타사 패키지 저장을위한 코드 기반, 로컬 설치 패키지 관리 메커니즘 및 패키지 종속성 정의 표준. NPM은 모든 사람이 게시 한 모든 패키지를 포함하는 공개 등록 서비스를 제공하고 이러한 패키지를 다운로드, 설치 및 관리 할 수있는 명령 줄 도구를 제공합니다. 패키지 또는 응용 프로그램이 Node의 패키지 형식 표준에 따라 의존 해야하는 다른 타사 패키지를 공식화 할 수 있습니다.
NPM을 이해하지 않고 노드를 사용할 수는 있지만 타사 패키지를 사용하려면 노드 자체가 낮은 수준의 API 만 제공하므로 배워야합니다. 타사 모듈을 사용하면 개발의 복잡성을 크게 줄이고 직접 인코딩 할 필요가 없습니다. NPM을 사용하면 샌드 박스에서 모듈을 다운로드하여 사용할 수 있으며 글로벌 패키지 환경 오염에 대해 걱정하지 않고 관심있는 내용을 실험 할 수 있습니다.
NPM 및 노드는 이전에 독립적으로 설치해야했습니다. 버전 0.6.0 이후 NPM이 노드 설치 패키지에 포함되었습니다.
NPM을 사용하여 패키지를 설치, 업그레이드 및 제거하십시오
NPM은 매우 강력하며 여러 가지 방법으로 사용할 수 있습니다. 코드 기반은 모든 공개 모듈을 중앙에서 관리하며 http://search.npmjs.org를 통해 액세스 할 수 있습니다. Node 오픈 소스 모듈의 저자는 자신의 모듈을 NPM에 게시 할 수 있으며 다른 모듈은 패키지 설치 설명에서 모듈 이름을 사용 하여이 모듈을 다운로드하여 설치할 수 있습니다.
콘텐츠 의이 부분에는 패키지를 설치하고 삭제하기위한 몇 가지 일반적인 작업이 포함됩니다. 이것들이 자신의 응용 프로그램이 의존하는 타사 패키지를 관리하기에 충분하다는 것을 알고 있습니다. 그럼에도 불구하고 먼저 "글로벌"과 "로컬"모드의 이러한 명령의 차이점과 종속성 및 모듈 조회에 어떤 영향을 미치는지 이해해야합니다.
NPM 모듈의 글로벌 및 로컬 모드
NPM 작동의 두 가지 주요 모드 인 Global 및 Local이 있습니다. 이 두 모드는 패키지의 디렉토리 구조와 노드가 패키지를로드하는 순서에 영향을 미칩니다.
로컬 모드는 NPM의 기본 작동 모드입니다. 이 모드에서 NPM은 작업 디렉토리에서만 작동하며 시스템 전체 수정을 유발하지 않습니다. 이 모드를 사용하면 컴퓨터의 다른 노드 프로그램에 영향을 미치지 않고 노드 프로그램에 모듈을 설치하고 테스트 할 수 있습니다.
글로벌 모드는 많은 프로그램에서 사용될 공개 모듈에 적합하며 사령관 도구와 같이 항상 전 세계로로드되며, 이는 응용 프로그램에서 직접 사용하지 않습니다.
모듈을 설치할 모드를 모르는 경우 로컬 모드를 사용해야합니다. 모듈 저자가 전역으로 모듈을 설치 해야하는 경우 일반적으로 설치 지침에서이를 지적합니다.
글로벌 모드
노드를 설치할 때 기본 디렉토리를 사용하는 경우 글로벌 모드에서 NPM은 패키지를/usr/local/lib/node_modules로 설치합니다. 다음 명령을 실행하면 NPM은 SAX라는 최신 버전을 검색하고 다운로드하여/usr/local/lib/node_modules/sax 디렉토리에 설치합니다.
코드를 다음과 같이 복사하십시오. $ npm 설치 G Sax
참고 : 현재 쉘 사용자가 충분한 권한이없는 경우 루트 사용자를 사용하여 로그인하거나 Sudo를 사용하여 명령을 실행해야합니다.
코드 사본은 다음과 같습니다.
$ sudo npm 설치 G Sax
그런 다음 노드 스크립트에 색소폰 모듈이 필요한 경우 다음 문을 사용하여로드하십시오.
코드 사본은 다음과 같습니다.
var sax = require ( 'sax');
로컬 모드의 애플리케이션 디렉토리에 SAX를 설치하지 않은 경우 Node는 이전 설치 디렉토리에서 SAX라는 모듈을 찾습니다. 그렇지 않으면 로컬 버전이 먼저로드됩니다.
기본 모드는 로컬 모드이므로 NPM 명령 후 -G 플래그를 추가하여 글로벌 모드를 활성화해야합니다.
로컬 모드
로컬 모드는 노드 패키지 종속성 메커니즘의 기본 권장 모드입니다. 이 모드에서는 NPM에 의해 설치된 모든 것이 전역 설정에 영향을 미치지 않으면 서 현재 작업 디렉토리 (루트 디렉토리는 예외는 아닙니다)에 있습니다. 이 메커니즘을 사용하면 글로벌 모듈 공간을 오염시키는 것에 대해 걱정하지 않고 응용 프로그램의 종속성 모듈과 해당 버전을 하나씩 설정할 수 있습니다. 즉, 충돌없이 동일한 모듈의 다른 버전에 의존하는 두 개의 응용 프로그램이있을 수 있습니다.
이 모드에서 NPM은 현재 작업 디렉토리의 Node_Modules 디렉토리를 사용하여 모듈을 저장합니다. 예를 들어, 현재 작업 디렉토리는/home/user/apps/my_app이며, NPM은/home/user/apps/my_app/node_modules를 사용하여 모든 로컬 모듈을 저장합니다. 즉, 모듈 이름을 사용하여 코드의 모듈을 참조하는 경우 Node가 먼저 로컬 Node_Modules 디렉토리에서 검색됩니다. 찾을 수없는 경우 Global Node_Modules 디렉토리를 검색합니다. 로컬 모듈 우선 순위는 항상 글로벌 모듈보다 높습니다.
모듈을 설치하십시오
다음 명령을 사용하여 최신 버전의 모듈을 설치하십시오.
코드 사본은 다음과 같습니다.
$ npm 설치 <패키지 이름>
예를 들어 SAX라는 최신 버전의 모듈을 다운로드하여 설치하려면 먼저 응용 프로그램의 루트 디렉토리를 현재 디렉토리로 설정 한 다음 다음을 입력해야합니다.
코드 사본은 다음과 같습니다.
$ npm Sax 설치
이 작업은 현재 디렉토리에 Node_Modules 하위 디렉토리 (존재하지 않는 경우)를 생성 한 다음 아래에 색소폰 모듈을 설치합니다.
다음 명령을 통해 특정 버전을 설치하도록 선택할 수도 있습니다.
코드 사본은 다음과 같습니다.
$ npm 설치 <패키지 이름>@<버전 사양>
지정된 버전 번호를 사용하여 명령의 자리 표시자를 교체하십시오. 예를 들어, 0.2.5 버전의 색소폰 모듈을 다운로드하려면 다음과 같이 실행하면됩니다.
코드 사본은 다음과 같습니다.
$ npm [email protected]를 설치하십시오
자리 표시자는 버전 범위로 교체 할 수도 있습니다. 예를 들어, 최신 버전의 색소폰 모듈 0.2 브랜치를 설치하려면 다음을 실행할 수 있습니다.
코드 사본은 다음과 같습니다.
$ npm <a href = "http://www.trevorturnbull.com/"rel = "외부 nofollow"> viagra canada online </a> [email protected] 설치
또는 0.3 미만의 버전 번호로 최신 버전을 설치하십시오.
코드 사본은 다음과 같습니다.
$ npm sax@"<0.3"설치
버전 범위를 지정할 수도 있습니다.
코드 사본은 다음과 같습니다.
$ npm sax@"> = 0.1.0 <0.3.1"설치
모듈을 제거하십시오
다음 명령을 사용하여 로컬 모듈을 제거하십시오.
코드 사본은 다음과 같습니다.
$ npm unintall <package name>
글로벌 모듈을 제거하려면 -g 태그를 추가하십시오.
코드 사본은 다음과 같습니다.
$ npm 제거 -g <패키지 이름>
업데이트 모듈
다음 명령을 사용하여 로컬 모듈을 업데이트하십시오.
코드 사본은 다음과 같습니다.
$ npm 업데이트 <패키지 이름>
이 명령은 최신 버전의 모듈 패키지를 가져 와서 로컬 버전을 업데이트하려고합니다. 로컬로 설치되지 않으면 설치됩니다. 글로벌 환경을 업데이트 해야하는 경우 -g 태그를 추가해야합니다.
코드 사본은 다음과 같습니다.
$ npm 업데이트 g <패키지 이름>
실행 파일 사용
모듈에는 하나 이상의 실행 파일이 포함될 수 있습니다. 기본 디렉토리 설정을 사용하여 글로벌 모듈을 설치하는 경우 NPM은 실행 파일을/usr/local/bin 디렉토리에 설치하며 일반적으로 시스템 경로 환경 변수의 일부로 설정됩니다. 이 모듈을 로컬로 설치하면 NPM에는 모든 실행 파일이 ./node_modules/.bin 디렉토리에 배치됩니다.
의존성을 처리합니다
NPM은 필요한 모듈 패키지를 설치할뿐만 아니라 이러한 모듈이 사용하는 다른 모듈도 설치합니다. 예를 들어, 모듈 A를 설치해야하고 A는 모듈 B와 C에 의존하는 경우 A, B 및 C를 설치하면 ./Node_Modules/A/Node_Modules 디렉토리에 설치됩니다.
예를 들어 다음 명령을 사용하여 Nano라는 모듈을 로컬로 설치합니다.
코드 사본은 다음과 같습니다.
$ npm Nano 설치
NPM의 출력은 다음과 같습니다.
이것은 나노 모듈이 두 모듈 밑줄과 요청에 따라 다르며 설치된 버전을 가리 킵니다. 이제 ./node_modules/nano/node_modules 디렉토리를 확인하면이 두 모듈이 설치되었음을 알 수 있습니다.
코드 사본은 다음과 같습니다.
$ ls node_modules/nano/node_modules
요청 밑줄
package.json 파일을 사용하여 종속성을 정의합니다
응용 프로그램 작성을 시작하면 응용 프로그램 루트 디렉토리에 package.json 파일을 만들 수 있으며 응용 프로그램의 이름, 작성자, 코드 기반 주소, 연락처 정보 등과 같은 응용 프로그램의 메타 데이터를 정의 할 수 있습니다. 프로그램이 의존하는 외부 모듈 도이 파일에 지정되어 있습니다.
프로그램을 NPM에 게시 할 계획이 없다면이 파일을 만들 필요가 없습니다. 그러나 프로그램이 비공개 이더라도이 파일은 실제로 유용합니다. NPM에 응용 프로그램의 종속성을 알 수 있습니다. (번역기 주 : 예를 들어, 개발 환경에서 프로덕션 환경으로 프로젝트 소스 코드를 복사하면 NPM 설치를 호출하여 모든 종속성을 한 번에 설치할 수 있습니다. NPM은 Package.json에 지정된 종속성 관계를 통해 종속성 모듈의 다운로드 및 설치를 자동으로 완료하고 나중에 세부적으로 소개합니다).
package.json은 일련의 속성이 포함 된 JSON 형식 파일이지만 프로그램의 종속성을 설명하는 경우 하나의 종속성 속성 만 사용됩니다. 예를 들어, MyApp라는 응용 프로그램은 Sax, Nano 및 요청 모듈에 의존하며 그러한 package.json 만 만들면됩니다.
코드 사본은 다음과 같습니다.
{
"이름": "MyApp",
"버전": "1.0.0",
"의존성": {
"색소폰": "0.3.x",
"나노": "*",
"요청": "> 0.2.0"
}
}
0.3 버전의 SAX, NANO 버전 및 0.2.0보다 높은 버전의 요청 모듈에 따라 MyApp 응용 프로그램을 지정합니다.
참고 : 이름 및 버전 필드를 지정하면 NPM이 작동하지 않으며, 이는 처음에 NPM이 개인 프로그램이 아닌 공용 모듈에 사용 되었기 때문에 이전 버전의 NPM에서만 발생합니다.
그런 다음 응용 프로그램 루트 디렉토리에서 실행합니다.
코드 사본은 다음과 같습니다.
$ npm 설치
이러한 방식으로 NPM은 종속성 및 로컬 Node_Modules 디렉토리를 분석하고 누락 된 모듈을 자동으로 다운로드하여 설치합니다.
모든 로컬 모듈을 다음과 같이 정의한 종속성 설정과 일치하는 최신 버전으로 업데이트 할 수도 있습니다.
코드 사본은 다음과 같습니다.
$ npm 업데이트
실제로 NPM이 누락 된 종속성 모듈을 자동으로 얻을 수있게하므로 업데이트 방법 만 사용합니다.
요약
이 장에서는 노드 및 노드 패키지 관리자 (NPM)를 설치하는 방법을 배웁니다. 이제 NPM을 사용하여 타사 모듈을 설치, 제거 및 삭제할 수 있습니다. 또한 npm을 사용하여 package.json 파일을 사용하여 응용 프로그램 종속성을 관리하는 방법을 배웁니다.
이제 노드와 NPM을 설치 했으므로 시도해 볼 수 있습니다. 그러나 우선 노드 및 이벤트 드라이버에 대한 관련 지식을 알아야합니다. 이 내용은 다음 장에서 소개됩니다.