제퍼넷 로고

노드 란 무엇이며 언제 사용해야합니까?

시간

따라서 Node.js에 대해 들어 보았지만 그것이 무엇인지 또는 개발 워크 플로우에 맞는지 확실하지 않습니다. 또는 사람들이 Node의 칭찬을 노래하는 것을 들었을 때 배우고 싶은 것이 있는지 궁금합니다. 다른 백엔드 기술에 익숙하고 노드와 다른 점을 알고 싶을 것입니다.

그 소리가 당신처럼 들리면 계속 읽으십시오. 이 기사에서는 Node.js와 주요 패러다임에 대해 초보자에게 친숙한 수준으로 살펴 보겠습니다. Node 환경의 현재 상태뿐만 아니라 Node의 주요 사용 사례를 살펴보고 그 과정에서 다양한 추가 정보를 제공합니다.

기사 전체에서“Node”와“Node.js”를 서로 바꿔 사용할 것입니다.

Node.js은 (는) 무엇 이죠?

온라인에서 찾을 수있는 많은 정의가 있습니다. 더 인기있는 몇 가지를 살펴 보겠습니다. 이것은 프로젝트 홈페이지에 무엇을 말해야 하는가:

Node.js®는 Chrome의 V8 JavaScript 엔진을 기반으로하는 JavaScript 런타임입니다.

그리고 이건 스택 오버플로가 제공하는 것:

Node.js는 Google의 V8 JavaScript 엔진 및 libuv 라이브러리를 사용하는 이벤트 기반 비 차단 비동기 I / O 런타임입니다.

흠, "이벤트 기반", "비 차단", "비동기 I / O"-한 번에 소화하기가 상당히 쉽습니다. 따라서 다른 각도에서 접근하여 두 가지 설명에서 언급 한 다른 세부 사항 인 V8 JavaScript 엔진에 초점을 맞춰 시작하겠습니다.

Chrome의 V8 JavaScript 엔진을 기반으로하는 노드

V8 엔진 는 Chrome 및 Brave, Opera 및 Vivaldi를 포함한 다른 Chromium 기반 웹 브라우저에서 실행되는 오픈 소스 JavaScript 엔진입니다. 성능을 염두에두고 설계되었으며 컴퓨터가 실행할 수있는 기본 기계 코드로 JavaScript를 직접 컴파일해야합니다.

그러나 Node가 V8 엔진에 구축되었다고해서 Node 프로그램이 브라우저에서 실행되는 것은 아닙니다. 그렇지 않습니다. 오히려 Node의 제작자 (라이언 달)는 V8 엔진을 사용하여 파일 시스템 API, HTTP 라이브러리 및 여러 운영 체제 관련 유틸리티 메소드와 같은 다양한 기능으로 엔진을 향상 시켰습니다.

이는 Node.js가 컴퓨터에서 JavaScript를 실행하는 데 사용할 수있는 프로그램임을 의미합니다. 즉, JavaScript 런타임입니다.

Node.js를 어떻게 설치합니까?

다음 섹션에서는 Node를 설치하고 몇 가지 간단한 프로그램을 작성합니다. 우리는 또한 볼 것이다 npmNode와 함께 제공되는 패키지 관리자

노드 바이너리와 버전 관리자

많은 웹 사이트에서 공식 노드 다운로드 페이지 시스템의 노드 바이너리를 가져옵니다. 작동하지만 대신 버전 관리자를 사용하는 것이 좋습니다. 여러 버전의 Node를 설치하고 마음대로 전환 할 수있는 프로그램입니다. 버전 관리자를 사용하면 여러 가지 장점이 있습니다. 예를 들어, npm과 함께 Node를 사용할 때 잠재적 인 권한 문제를 무시하고 프로젝트별로 노드 버전을 설정할 수 있습니다.

버전 관리자 경로를 좋아한다면 빠른 팁을 참조하십시오. nvm을 사용하여 여러 버전의 Node.js 설치. 그렇지 않으면 위의 링크에서 시스템의 올바른 바이너리를 가져와 설치하십시오.

“안녕하세요!” Node.js 방식

터미널을 열고 다음을 입력하여 시스템에 노드가 설치되어 있는지 확인할 수 있습니다 node -v. 모든 것이 잘 진행 되었다면 v12.14.1 표시됩니다. 이것은 현재입니다 LTS 작성 당시의 버전.

다음으로 새 파일을 만듭니다 hello.js 다음 코드로 복사하십시오.

console.log("Hello, World!");

이것은 노드를 사용합니다. 내장 콘솔 모듈 터미널 창에 메시지를 표시합니다. 예제를 실행하려면 다음 명령을 입력하십시오.

node hello.js

Node.js가 올바르게 구성된 경우“Hello, World!” 가 표시됩니다.

Node.js는 최신 JavaScript를 지원합니다

이것에서 볼 수 있듯이 호환성 테이블Node는 ECMAScript 2015 (ES6) 이상을 완벽하게 지원합니다. 하나의 런타임 (특정 버전의 V8 엔진) 만 대상으로하기 때문에 최신의 최신 구문을 사용하여 JavaScript를 작성할 수 있습니다. 또한 다른 브라우저에서 실행되는 JavaScript를 작성하는 경우와 같이 일반적으로 호환성 문제에 대해 걱정할 필요가 없습니다.

요점을 설명하기 위해 태그와 같은 몇 가지 최신 JavaScript 기능을 사용하는 두 번째 프로그램이 있습니다. 템플릿 리터럴, 객체 파괴Array.prototype.flatMap ():

function upcase(strings, ...values) { return values.map(name => name[0].toUpperCase() + name.slice(1)) .join(' ') + strings[2];
} const person = { first: 'brendan', last: 'eich', age: 56, position: 'CEO of Brave Software',
}; const { first, last } = person;
const emoticon = [ ['┌', '('], ['˘', '⌣'], ['˘', ')', 'ʃ'] ]; console.log( upcase`${first} ${last} is the creator of JavaScript! ` + emoticon.flat().join('')
);

이 코드를라는 파일에 저장하십시오 index.js 명령을 사용하여 터미널에서 실행하십시오. node index.js. 넌 봐야 해 Brendan Eich is the creator of JavaScript! ┌(˘⌣˘)ʃ 터미널로 출력.

JavaScript 패키지 관리자 npm 소개

앞에서 언급했듯이 Node에는 npm이라는 패키지 관리자가 번들로 제공됩니다. 시스템에 설치된 버전을 확인하려면 다음을 입력하십시오. npm -v.

존재하는 것 외에도 전에, JavaScript의 패키지 관리자 인 npm은 또한 세계 최대의 소프트웨어 레지스트리입니다. 다운로드 할 수있는 1,000,000 개 이상의 JavaScript 코드 패키지가 있으며 주당 수십억 건의 다운로드가 있습니다. npm을 사용하여 패키지를 설치하는 방법을 간단히 살펴 보겠습니다.

전역으로 패키지 설치

터미널을 열고 다음을 입력하십시오.

npm install -g jshint

이것은 설치됩니다 jshint 패키지 시스템에서 전 세계적으로 우리는 그것을 보푸라기 위해 사용할 수 있습니다 index.js 이전 예의 파일 :

jshint index.js

이제 여러 ES6 관련 오류가 표시됩니다. 수정하려면 추가하십시오. /* jshint esversion: 6 */ 의 상단에 index.js 파일에서 명령을 다시 실행하면 linting이 통과해야합니다.

보푸라기를 리프레쉬하고 싶다면 다음을 참조하십시오. JavaScript Linting 도구 비교.

로컬로 패키지 설치

시스템과는 달리 프로젝트와는 달리 패키지를 프로젝트에 로컬로 설치할 수도 있습니다. 만들기 test 폴더를 열고 해당 디렉토리에서 터미널을 엽니 다. 다음에 이것을 입력하십시오 :

npm init -y

이것은 생성하고 자동으로 채워집니다 package.json 같은 폴더에 파일. 다음으로 npm을 사용하여 lodash 패키지 프로젝트 종속성으로 저장하십시오.

npm install lodash --save

이름이 지정된 파일 만들기 test.js 다음을 추가하십시오.

const _ = require('lodash'); const arr = [0, 1, false, 2, '', 3];
console.log(_.compact(arr));

마지막으로 다음을 사용하여 스크립트를 실행하십시오. node test.js. 넌 봐야 해 [ 1, 2, 3 ] 터미널로 출력.

작업 package.json 입양 부모로서의 귀하의 적합성을 결정하기 위해 미국 이민국에

당신이 내용을 보면 test 디렉토리, 당신은 제목의 폴더를 볼 수 있습니다 node_modules. npm이 lodash와 lodash가 의존하는 모든 라이브러리를 저장 한 곳입니다. 그만큼 node_modules 버전 관리를 위해 폴더를 체크인해서는 안되며 실제로 다음을 실행하여 언제든지 다시 만들 수 있습니다. npm install 프로젝트의 루트 내에서.

당신은 열 경우 package.json 파일 아래에 lodash가 표시됩니다. dependencies 들. 이 방법으로 프로젝트의 종속성을 지정하면 모든 개발자가 어디서나 프로젝트를 복제하고 npm을 사용하여 실행해야하는 패키지를 설치할 수 있습니다.

npm에 대한 자세한 내용을 보려면 기사를 읽으십시오. npm 초보자 안내서 — 노드 패키지 관리자.

Node.js은 (는) 무엇 이죠?

Node와 npm이 무엇이며 설치 방법을 알았으므로 개발 프로세스를 자동화하도록 설계된 다양한 빌드 도구 설치 (npm을 통해) 및 다양한 빌드 도구를 실행 (Node를 통해)하는 첫 번째 일반적인 용도로 관심을 돌릴 수 있습니다. 현대적인 JavaScript 응용 프로그램.

이 빌드 도구는 모든 모양과 크기로 제공되며, 현대적인 JavaScript 환경에서 벗어나지 않아도됩니다. JavaScript 파일 및 종속성을 정적 자산에 번들로 묶거나 테스트를 실행하거나 자동 코드 린트 및 스타일 검사에 이르기까지 모든 용도로 사용할 수 있습니다.

SitePoint의 빌드 툴링을 다루는 다양한 기사가 있습니다. 여기 내가 가장 좋아하는 항목이 있습니다.

최신 JavaScript 프레임 워크 (예 : React 또는 Angular)를 사용하여 앱 개발을 시작하려는 경우 Node 및 npm에 대한 실무 지식이 있어야합니다. ). 이러한 프레임 워크를 실행하려면 노드 백엔드가 필요하지 않기 때문입니다. 당신은하지 않습니다. 오히려 이러한 프레임 워크 (및 많은 관련 패키지)가 모두 npm을 통해 사용 가능하고 Node를 사용하여 적절한 개발 환경을 구축 할 수 있기 때문입니다.

최신 JavaScript 앱에서 Node가 수행하는 역할을 찾으려면 다음을 읽으십시오. 최신 JavaScript 응용 프로그램 분석.

Node.js를 통해 서버에서 JavaScript를 실행할 수 있습니다

다음으로 Node.js의 가장 큰 사용 사례 중 하나 인 서버에서 JavaScript를 실행합니다. 이것은 새로운 개념이 아니며 1994 년에 Netscape 방식으로 처음 시도되었습니다. 그러나 Node.js는 실제 견인력을 얻는 첫 번째 구현이며 기존 언어와 비교하여 몇 가지 고유 한 이점을 제공합니다. 노드는 이제 기술 스택에서 중요한 역할을합니다. 많은 유명 회사. 이러한 이점이 무엇인지 살펴 보겠습니다.

Node.js 실행 모델

매우 간단한 용어로 Apache와 같은 기존 서버에 연결하면 요청을 처리 할 새 스레드가 생성됩니다. PHP 또는 Ruby와 같은 언어에서 후속 I / O 작업 (예 : 데이터베이스와의 상호 작용)은 작업이 완료 될 때까지 코드 실행을 차단합니다. 즉, 서버는 결과 처리로 넘어 가기 전에 데이터베이스 조회가 완료 될 때까지 기다려야합니다. 이런 일이 발생하는 동안 새로운 요청이 들어 오면 서버는 새로운 스레드를 생성하여 처리합니다. 많은 수의 스레드로 인해 시스템이 느려질 수 있으며 최악의 경우 사이트가 다운 될 수 있으므로 잠재적으로 비효율적입니다. 더 많은 연결을 지원하는 가장 일반적인 방법은 더 많은 서버를 추가하는 것입니다.

그러나 Node.js는 단일 스레드입니다. 또한 이벤트 중심이는 노드에서 발생하는 모든 것이 이벤트에 반응 함을 의미합니다. 예를 들어, 새로운 요청이 들어 오면 (한 종류의 이벤트) 서버가 처리를 시작합니다. 그런 다음 차단 I / O 작업이 발생하면 완료되기를 기다리는 대신 다음 이벤트를 계속 처리하기 전에 콜백을 등록합니다. I / O 작업이 완료되면 (다른 종류의 이벤트) 서버가 콜백을 실행하고 원래 요청에 대한 작업을 계속합니다. 후드 아래에서 노드는 리브 이 비동기 (즉, 비 블로킹) 동작을 구현하는 라이브러리.

노드의 실행 모델은 서버의 오버 헤드를 거의 발생시키지 않으므로 많은 동시 연결을 처리 할 수 ​​있습니다. Node 앱을 확장하는 기존 방식은이를 복제하고 복제 된 인스턴스가 작업 부하를 공유하도록하는 것입니다. Node.js는 내장 모듈 단일 서버에서 복제 전략을 구현하는 데 도움이됩니다.

다음 이미지는 노드의 실행 모델을 보여줍니다.

노드의 실행 모델

출처 : Node.js 소개, Christian Maderazo 교수, James Santos

또는 비디오를 선호한다면이 멋진 대화를 확인하십시오. 어쨌든 이벤트 루프는 무엇입니까? 노드별로 다르지 않지만 개념을 설명하는 데 큰 도움이됩니다.

단점이 있습니까?

노드가 단일 스레드에서 실행된다는 사실은 몇 가지 제한 사항을 부과합니다. 예를 들어, I / O 호출 차단은 피해야합니다. CPU를 많이 사용하는 작업은 작업자 스레드로 전달해야합니다전체 프로세스가 중단 될 우려가 있으므로 오류를 항상 올바르게 처리해야합니다.

일부 개발자는 JavaScript가 부과하는 콜백 기반 코딩 스타일을 싫어합니다. 비동기 JavaScript 작성의 공포에 전념하는 사이트). 그러나 네이티브 약속이 도착하고 비동기식 대기가 뒤따 랐습니다. 최신 JavaScript의 흐름 제어 그 어느 때보 다 쉬워졌습니다.

“안녕하세요!” — 서버 버전

"Hello, World!"에 대해 간단히 살펴 보겠습니다. HTTP 서버 예 :

const http = require('http'); http.createServer((request, response) => { response.writeHead(200); response.end('Hello, World!');
}).listen(3000); console.log('Server running on http://localhost:3000');

이를 실행하려면 코드를 파일 이름으로 복사하십시오. hello-world-server.js 사용하여 실행 node hello-world-server.js. 브라우저를 열고 http://localhost:3000 “안녕하세요, 세계!” 브라우저에 표시됩니다.

이제 코드를 살펴 보겠습니다.

Node의 네이티브를 요구하여 시작합니다 HTTP 모듈. 그런 다음 생성 서버 익명 함수를 전달하는 새 웹 서버 객체를 만드는 방법입니다. 이 기능은 서버에 새로 연결될 때마다 호출됩니다.

익명 함수는 두 개의 인수 (requestresponse). 여기에는 사용자의 요청과 "Hello World!"와 함께 200 개의 HTTP 상태 코드를 다시 보내는 데 사용되는 응답이 포함됩니다. 메시지.

마지막으로 서버는 포트 3000에서 들어오는 요청을 수신하고 터미널에 메시지를 출력하여 실행 중임을 알려줍니다.

분명히 노드에 간단한 서버를 만드는 것보다 더 많은 것이 있습니다 (예 : 오류를 올바르게 처리하는 것이 중요합니다). 설명서를 확인하십시오 or 우리의 튜토리얼을 참조하십시오 더 자세히 알고 싶다면

Node.js는 어떤 종류의 앱에 적합합니까?

Node는 특히 채팅 사이트 또는 다음과 같은 앱과 같은 특정 형태의 실시간 상호 작용 또는 협업이 필요한 응용 프로그램을 구축하는 데 적합합니다. 코드 쉐어다른 사람이 문서를 실시간으로 편집하는 것을 볼 수 있습니다. 또한 노드가 파일을 처리 할 수 ​​있기 때문에 I / O 중심의 많은 요청 (예 : 데이터베이스에서 작업을 수행해야하는 요청)을 처리하는 API 또는 데이터 스트리밍 관련 사이트를 처리하는 데 적합합니다. 그들이 여전히 업로드되는 동안. Node의 이러한 실시간 측면이 더 자세히 살펴보고 싶은 경우 튜토리얼을 확인하십시오. 실시간 채팅 앱 구축.

그러나 이것이 모든 사람이 다음 Trello 또는 다음 Google 문서를 작성하는 것은 아니며, 실제로 노드를 사용하여 간단한 CRUD 앱을 작성할 수있는 이유는 없습니다. 그러나이 경로를 따르면 Node가 매우 중요하다는 사실과 곧 앱을 빌드하고 구성하는 방식이 매우 중요하다는 것을 알게 될 것입니다. 상용구를 줄이기 위해 사용할 수있는 다양한 프레임 워크가 있습니다. Express 선두 주자로 자리 매김했습니다. 그러나 Express와 같은 솔루션조차도 최소입니다. 즉, 평범하지 않은 것을 수행하려면 npm에서 추가 모듈을 가져와야합니다. 이는 많은 기능이 기본 제공되는 Rails 또는 Laravel과 같은 프레임 워크와 완전히 대조적입니다.

기본적이고 전통적인 앱을 구축하려면 튜토리얼을 확인하십시오. Node.js MVC 애플리케이션을 구축하고 구조화하는 방법.

Node.js의 장점은 무엇입니까?

속도와 확장 성 외에도 웹 서버와 브라우저에서 JavaScript를 사용하면 얻을 수있는 이점은 뇌가 더 이상 모드를 전환 할 필요가 없다는 것입니다. 모든 언어를 동일한 언어로 수행 할 수 있으므로 개발자는 생산성을 높이고 더 행복하게 만들 수 있습니다. 예를 들어 서버와 클라이언트간에 코드를 쉽게 공유 할 수 있습니다.

Node의 큰 장점 중 하나는 JSON을 사용한다는 것입니다. JSON은 아마도 웹에서 가장 중요한 데이터 교환 형식이며, MongoDB와 같은 객체 데이터베이스와 상호 작용하기위한 언어입니다. JSON은 JavaScript 프로그램에서 사용하기에 이상적입니다. 즉, 노드 작업시 데이터를 다시 포맷하지 않고도 레이어간에 데이터를 깔끔하게 이동할 수 있습니다. 브라우저에서 서버, 데이터베이스로 하나의 구문을 가질 수 있습니다.

마지막으로, JavaScript는 어디에나 존재합니다. 대부분의 사람들은 JavaScript에 익숙하거나 어느 시점에서 사용했습니다. 이는 다른 서버 측 언어보다 노드 개발로 전환하는 것이 더 쉽다는 것을 의미합니다. 크레이그 버클러를 인용하자면 노드 대 PHP 스맥 다운JavaScript가 남아있을 수 있습니다. 세계에서 가장 오해가 많은 언어 — 일단 개념이 클릭되면 다른 언어가 번거로워 보입니다.

노드의 다른 용도

그리고 서버에서 멈추지 않습니다. Node.js에는 흥미롭고 다양한 용도가 많이 있습니다!

예를 들어 스크립팅 언어로 사용할 수 있습니다 PC에서 반복적이거나 오류가 발생하기 쉬운 작업을 자동화합니다. 또한 사용할 수 있습니다 자신 만의 명령 줄 도구를 작성하십시오이 같은 여만 스타일 생성기 새로운 프로젝트를 발굴하기 위해

또한 Node.js를 사용하여 크로스 플랫폼 데스크탑 앱을 구축하고 심지어 나만의 로봇 만들기. 무엇을 사랑하지거야?

결론

JavaScript는 어디에나 있으며 Node는 방대하고 광대 한 주제입니다. 그럼에도 불구하고, 나는이 기사에서 Node.js에 대한 초보자 친화적이고 높은 수준의 개요와 처음에 약속 한 주요 패러다임을 제공하기를 바랍니다. 또한 이전에 살펴본 정의를 다시 읽으면 상황이 훨씬 더 이해되기를 바랍니다.

Node.js는 Google의 V8 JavaScript 엔진 및 libuv 라이브러리를 사용하는 이벤트 기반 비 차단 비동기 I / O 런타임입니다.

질문이나 의견이 있으시면 언제든지 저에게 연락하십시오 트위터.

출처 : https://www.sitepoint.com/an-introduction-to-node-js/?utm_source=rss

spot_img

최신 인텔리전스

spot_img