2009년 JSConf 컨퍼런스에서 Ryan Dahl이라는 젊은 프로그래머는 이벤트 루프 세트와 낮은 IO 애플리케이션 프로그래밍 인터페이스( API). 다른 서버사이드 플랫폼과 달리 JavaScript는 본질적으로 이벤트 중심 IO이며, 이 프로젝트는 이벤트 중심 애플리케이션 작성의 복잡성을 크게 줄여 놀라운 속도로 인기를 끌었고 실제 프로젝트에 적용되었습니다. (Jack: 이 번역은 그다지 신뢰할 만하지 않습니다. 원문: 이 프로젝트는 모든 I/O 기본 요소가 이벤트 기반이고 우회할 방법이 없는 다른 서버측 JavaScript 플랫폼과는 달랐습니다.)
이 프로젝트의 이름은 Node.js이며 개발자는 이를 Node.js라고 부르는 데 익숙합니다. Node는 동시성이 높은 애플리케이션을 구축하기 위한 순수 이벤트 중심의 비차단 툴킷을 제공합니다.
참고: Node를 사용하면 빠르고 확장 가능한 네트워크 서비스를 쉽게 구축할 수 있습니다.
Ryan Dahl이 Node를 소개한 이후 Node는 업계에서 폭넓은 주목을 받았습니다. 이들은 빠르고 확장 가능한 네트워크 서비스를 배포하기 위해 Node를 사용하기 시작했습니다. 노드가 너무 매력적이네요.
한편으로 JavaScript는 지구상에서 가장 널리 사용되는 프로그래밍 언어입니다. 대부분의 웹 프로그래머는 브라우저 측에서 JavaScript를 사용했으며 서버 측은 자연스러운 확장입니다.
반면 Node는 작고 귀엽기 때문에 Node의 핵심 기능 세트가 매우 작고 기존 API가 매우 정교하여 개발자의 복잡성을 최소화합니다. 좀 더 복잡한 애플리케이션을 구축하려면 원하는 일부 타사 모듈을 선택하여 설치하기만 하면 됩니다.
Node가 매력적인 이유는 또 있습니다. 몇 분 안에 다운로드하고 설치하고 실행할 수 있습니다.
일반적으로 공식 웹사이트(http://nodejs.org)의 단계에 따라 Node를 설치하면 됩니다. Windows, Linux, Macintosh 및 Solaris를 지원합니다.
Windows에 노드 설치
Node는 0.6.0 버전부터 Windows를 지원합니다. Windows에 Node를 설치하려면 Http://nodejs.org/#download에서 node-v*.msi를 다운로드한 다음 두 번 클릭하세요. 실행하면 그림 1-1과 유사한 보안 대화 상자가 나타날 수 있습니다.
그림 1-1
다운로드가 완료되면 '실행' 버튼을 클릭하면 실행 여부를 알려주는 또 다른 보안 대화상자(그림 1-2)가 나타납니다.
그림 1-2
동의하면 Node 설치 마법사가 나타납니다(그림 1-3). Next를 클릭하면 잠시 후 Node 설치가 시작됩니다! 그림 1-4 참조
그림 1-3
그림 1-4
Mac OS X에서 설치
Mac OS X를 사용하는 경우 설치 마법사를 사용하여 Node를 설치할 수 있습니다. 먼저 http://nodejs.org/#download에서 node-v*.pkg를 다운로드합니다. 실행하면 설치 마법사의 첫 번째 대화 상자가 나타납니다. 그림 1-5
를 참조하세요.그림 1-5
설치를 위해 "계속"을 클릭하면 마법사가 시스템 사용자의 비밀번호를 입력하라는 메시지를 표시합니다. 잠시 후 설치가 시작됩니다. 그림 1-6 참조
그림 1-6
소스 코드에서 설치
UNIX 시스템을 사용하는 경우 소스코드를 컴파일하여 설치할 수 있습니다. 먼저 설치하려는 Node 버전을 선택한 후, 해당 소스코드를 다운로드해 빌드하고, Node를 설치하고 실행해야 합니다.
참고: Node는 여러 타사 코드 라이브러리에 의존하지만 다행히도 대부분은 Node 배포 패키지에 이미 포함되어 있습니다. 소스에서 빌드하는 경우 다음 두 가지가 필요합니다.
1.python(버전 2.4 이상) - Node와 함께 출시된 빌드 도구를 실행하려면 Python 환경이 필요합니다.
2.libssl-dev - SSL/TLS 암호화를 사용하려면 이를 설치해야 합니다. libssl은 openssl 도구에서 사용하는 클래스 라이브러리입니다. Linux 및 UNIX 시스템에서는 일반적으로 시스템의 패키지 관리자를 사용하여 설치할 수 있습니다. libssl은 Mac OS X에 사전 설치되어 있으므로 Mac OS X 시스템을 사용하는 경우 일반적으로 libssl을 설치할 필요가 없습니다.
노드 버전 선택
일반적으로 공식 웹사이트 nodejs.org에서 다운로드할 수 있는 두 가지 Node 버전이 있습니다: 안정 버전과 최신 버전.
Node의 경우 버전 번호 중 가장 작은 숫자가 이 버전의 안정성을 나타냅니다. 안정 버전은 짝수(0.2, 0.4, 0.6 등)를 사용하고, 불안정 버전은 홀수(0.1, 0.3, 0.5, 0.7)를 사용합니다. .
비안정 버전은 기능적으로 불안정할 뿐만 아니라, 후속 버전에서 API가 변경될 수도 있습니다. 안정 버전에서 출시된 API는 수정되지 않습니다. 각 안정 브랜치에 대해 새 패치에는 버그 수정뿐만 아니라 비안정 버전의 API 수정도 포함되어 있습니다.
최신 불안정 버전에서 새로운 기능을 테스트하고 싶지 않다면 최신 안정 버전을 선택해야 합니다. 불안정한 릴리스는 Node 핵심 팀이 새로운 기능을 테스트하는 전쟁터와 같습니다.
점점 더 많은 프로젝트와 회사가 제품에서 Node를 성공적으로 사용하고 있지만(공식 웹사이트 홈페이지에 표시됨) API의 불안정한 버전에서 안정적인 버전으로의 변경을 허용하는 방법을 배워야 할 수도 있습니다. 이것이 새로운 기술을 배우는 대가입니다.
노드 소스 코드 다운로드
이제 어떤 버전을 다운로드할지 알았으니 공식 웹사이트 http://nodejs.org로 이동하여 해당 tar 패키지를 찾은 다음 UNIX를 사용하는 경우 다운로드 링크를 복사하세요. 시스템의 경우 시스템 Wget이 이미 설치되어 있을 수 있습니다. 즉, 셸 명령을 사용하여 다운로드할 수 있습니다.
wget이 설치되어 있지 않으면 컬을 사용해야 할 수도 있습니다.
이 두 도구가 설치되어 있지 않으면 브라우저나 로컬 네트워크 등을 통해 tar 패키지를 로컬 디렉터리에 다운로드할 수 있는 다른 방법을 찾아야 합니다.
(이 책의 예제는 작성 당시 최신 안정 버전인 0.6.12를 사용했습니다.)
노드 구축
이제 소스 코드가 있으므로 이를 사용하여 Node 실행 파일을 빌드할 수 있습니다. 먼저 앞서 다운로드한 tarball 패키지의 압축을 풀어야 합니다.
그런 다음 소스 코드 디렉터리를 입력하세요:
노드 설치
빌드가 완료되면 다음 명령을 사용하여 Node를 설치합니다.
권한 문제가 발생하면 명령 앞에 sudo를 추가하고 루트 사용자로 실행하세요.
이제 Node를 실행할 수 있습니다. Node의 명령줄 인터페이스(CLI: 명령줄 인터페이스)를 먼저 경험해 보세요.
Node 패키지 관리자 준비 및 사용
지금까지는 Node 자체의 언어 기능과 핵심 기능만 사용할 수 있었습니다. 이것이 대부분의 프로그래밍 플랫폼이 타사 모듈을 다운로드하고 설치하고 관리하는 시스템을 갖춘 이유입니다. Node Package Manager( NPM: 노드 패키지 관리자)
NPM은 타사 패키지를 저장하기 위한 코드 베이스, 로컬에 설치된 패키지를 관리하기 위한 메커니즘, 패키지 종속성을 정의하기 위한 표준의 세 부분으로 구성됩니다. NPM은 모든 사람이 게시한 모든 패키지를 포함하는 공개 레지스트리 서비스를 제공하고 이러한 패키지를 다운로드, 설치 및 관리할 수 있는 명령줄 도구를 제공합니다. Node의 패키지 형식 표준에 따라 애플리케이션이 의존하는 패키지 또는 기타 타사 패키지를 공식화할 수 있습니다.
Node를 사용하기 위해 NPM을 알 필요는 없지만, 타사 패키지를 사용하려면 NPM을 배워야 합니다. Node 자체는 일부 하위 수준 API만 제공하기 때문에 타사 모듈을 사용하면 크게 줄일 수 있습니다. 개발 복잡성. 직접 코딩할 필요가 없습니다. NPM을 사용하면 샌드박스에서 모듈을 다운로드하고 사용할 수 있으므로 글로벌 패키지 환경을 오염시킬 걱정 없이 관심 있는 것을 실험할 수 있습니다.
NPM과 Node는 별도로 설치해야 했는데, 0.6.0 버전부터 Node 설치 패키지에 NPM이 포함되었습니다.
NPM을 사용하여 패키지 설치, 업그레이드, 제거
NPM은 매우 강력하며 다양한 방법으로 사용할 수 있습니다. 해당 코드 베이스는 모든 공개 모듈을 중앙에서 관리합니다. http://search.npmjs.org를 통해 액세스할 수 있습니다. Node 오픈 소스 모듈 작성자는 자신의 모듈을 NPM에 게시할 수 있으며, 다른 사람들은 패키지 설치 설명에 있는 모듈 이름을 사용하여 모듈을 다운로드하고 설치할 수 있습니다.
콘텐츠의 이 부분에는 패키지 설치 및 삭제를 위한 몇 가지 일반적인 작업이 포함되어 있습니다. 이를 아는 것만으로도 자신의 애플리케이션이 의존하는 타사 패키지 관리를 시작하기에 충분합니다. 그러나 먼저 이러한 명령을 이해해야 합니다. "글로벌" 및 "로컬" 모드가 있으며 종속성과 모듈 조회에 어떤 영향을 미치는지 설명합니다.
NPM 모듈의 전역 및 로컬 모드
NPM은 글로벌과 로컬의 두 가지 주요 모드로 작동합니다. 이 두 가지 모드는 패키지가 저장되는 디렉터리 구조와 노드가 패키지를 로드하는 순서에 영향을 미칩니다.
로컬 모드는 NPM의 기본 작동 모드입니다. 이 모드에서 NPM은 작업 디렉터리에서만 작동하며 시스템 전체를 수정하지 않습니다. 이 모드를 사용하면 특정 Node 프로그램에서 모듈을 설치하고 테스트할 수 있습니다. 컴퓨터의 다른 Node 프로그램에는 영향을 미치지 않습니다.
전역 모드는 명령줄 도구와 같이 애플리케이션에서 직접 사용하지 않는 많은 프로그램에서 사용하고 항상 전역적으로 로드되는 공통 모듈에 적합합니다.
어떤 모드로 모듈을 설치해야 할지 모르겠다면 로컬 모드를 이용하세요. 모듈 작성자가 모듈을 전역적으로 설치하도록 요구하는 경우 일반적으로 설치 지침에 이를 표시합니다.
글로벌 모드
Node를 설치할 때 기본 디렉터리를 사용하는 경우 전역 모드에서 NPM은 패키지를 /usr/local/lib/node_modules에 설치합니다. 다음 명령을 실행하면 NPM은 sax라는 최신 버전을 검색하여 다운로드하여 /usr/local/lib/node_modules/sax 디렉터리에 설치합니다.
기본 모드는 로컬 모드이므로 글로벌 모드를 활성화하려면 NPM 명령 뒤에 -g 플래그를 추가해야 합니다.
로컬 모드
로컬 모드는 노드 패키지 종속성 메커니즘에 대한 기본 권장 모드입니다. 이 모드에서는 NPM에 의해 설치된 모든 것이 전역 설정에 영향을 주지 않고 현재 작업 디렉터리(루트 디렉터리도 예외는 아님)에 있습니다. 이 메커니즘을 사용하면 전역 모듈 공간을 오염시킬 염려 없이 애플리케이션의 종속 모듈과 해당 버전을 하나씩 설정할 수 있습니다. 이는 충돌 없이 동일한 모듈의 서로 다른 버전에 의존하는 두 개의 애플리케이션을 가질 수 있음을 의미합니다.
이 모드에서 NPM은 현재 작업 디렉터리의 node_modules 디렉터리를 사용하여 모듈을 저장합니다. 예를 들어 현재 작업 디렉터리가 /home/user/apps/my_app인 경우 NPM은 /home/user/apps/my_app을 사용합니다. /node_modules는 모든 로컬 모듈을 저장합니다. 즉, 코드에서 모듈을 참조하기 위해 모듈 이름을 사용하는 경우 Node는 먼저 로컬 node_modules 디렉터리에서 검색합니다. 찾을 수 없으면 전역 node_modules 디렉터리를 검색합니다. 로컬 모듈의 우선 순위는 항상 것보다 높습니다. 글로벌 모듈의 것입니다.
모듈 설치
최신 버전의 모듈을 설치하려면 다음 명령을 사용하세요.
예를 들어 sax라는 모듈의 최신 버전을 다운로드하여 설치하려면 먼저 애플리케이션의 루트 디렉터리를 현재 디렉터리로 설정한 후 다음을 입력해야 합니다.
다음 명령을 통해 특정 버전을 설치하도록 선택할 수도 있습니다.
모듈 제거
로컬 모듈을 제거하려면 다음 명령을 사용하세요.
로컬 모듈을 업데이트하려면 다음 명령을 사용하세요.
실행 파일 사용
모듈에는 하나 이상의 실행 파일이 포함될 수 있습니다. 기본 디렉터리 설정을 사용하여 전역 모듈을 설치하는 경우 NPM은 일반적으로 Part의 일부로 설정되는 /usr/local/bin 디렉터리에 실행 파일을 설치합니다. 시스템 PATH 환경 변수. 이 모듈을 로컬로 설치하면 NPM은 모든 실행 파일을 ./node_modules/.bin 디렉터리에 배치합니다.
종속성 처리
NPM은 필요한 모듈 패키지를 설치할 뿐만 아니라 해당 모듈이 의존하는 다른 모듈도 설치합니다. 예를 들어 모듈 A를 설치해야 하는데 A가 모듈 B와 C에 종속된 경우 A를 설치할 때 B와 C도 ./node_modules/A/node_modules 디렉터리에 설치됩니다.예를 들어 다음 명령을 사용하여 nano라는 모듈을 로컬로 설치합니다.
나노 모듈이 밑줄과 요청 모듈에 의존함을 알려주며, 설치된 버전도 나타냅니다. 지금 ./node_modules/nano/node_modules 디렉토리를 확인하면 다음 두 모듈이 설치되어 있음을 알 수 있습니다.
package.json 파일을 사용하여 종속성 정의
애플리케이션 작성을 시작할 때 애플리케이션 루트 디렉터리에 package.json 파일을 생성하여 애플리케이션 이름, 작성자, 코드 라이브러리 주소, 연락처 정보 등과 같은 애플리케이션의 메타데이터를 정의할 수 있습니다. 프로그램이 의존하는 외부 모듈도 이 파일에 지정됩니다.프로그램을 NPM에 게시할 계획이 없다면 이 파일을 만들 필요가 없습니다. 그러나 프로그램이 비공개인 경우에도 이 파일은 실제로 NPM에 애플리케이션의 종속성을 알려줄 수 있습니다. . (역자 주: 예를 들어 개발 환경에서 프로덕션 환경으로 프로젝트 소스 코드를 복사하면 npm install을 호출하여 모든 종속 패키지를 한 번에 설치할 수 있습니다. npm은 종속성을 통해 종속 모듈의 다운로드 및 설치를 자동으로 완료합니다. package.json에 지정하므로 하나씩 수행할 필요는 없습니다. 자세한 내용은 나중에 소개하겠습니다.)
package.json은 일련의 속성을 포함하는 JSON 형식 파일입니다. 그러나 단지 프로그램의 종속성을 설명하기 위한 것이라면 하나의 종속성 속성만 사용됩니다. 예를 들어 MyApp이라는 애플리케이션은 sax, nano 및 request 모듈을 사용합니다. 다음과 같이 package.json만 생성하면 됩니다.
"이름" : "MyApp",
"버전": "1.0.0",
"종속성": {
"색소폰": "0.3.x",
"나노": "*",
"요청" : ">0.2.0"
}
}
Sax 버전 0.3, nano 버전, 요청 모듈 버전 0.2.0 이상에 의존하는 MyApp 애플리케이션을 지정하셨습니다.
참고: 이름과 버전 필드를 지정하면 NPM이 작동하지 않을 수 있습니다. 원래 NPM은 개인 프로그램이 아닌 공용 모듈에 사용되었기 때문에 이전 버전의 NPM에서만 발생합니다.
그런 다음 애플리케이션의 루트 디렉터리에서 다음을 실행합니다.
이러한 방식으로 NPM은 종속성과 로컬 node_modules 디렉터리를 분석하고 누락된 모듈을 자동으로 다운로드하여 설치합니다.
다음 명령을 실행하여 모든 로컬 모듈을 정의된 종속성 설정과 일치하는 최신 버전으로 업데이트할 수도 있습니다.
요약
이 장에서는 Node 및 NPM(노드 패키지 관리자)을 설치하는 방법을 배웠습니다. 이제 NPM을 사용하여 타사 모듈을 설치, 제거 및 삭제할 수 있습니다. 또한 NPM을 사용하여 애플리케이션을 관리하는 방법도 배웠습니다. package.json 파일과의 종속성.
이제 Node와 NPM을 설치했으니 사용해 볼 수 있습니다. 하지만 먼저 다음 장에서 소개할 Node와 이벤트 중심에 대한 관련 지식을 알아야 합니다.