새로운 Node.js 8

Sep 13, 2025
어떻게

Node.js의 최신 주요 릴리스는 업데이트 된 JavaScript 엔진, NPM 버전 5, Google의 V8, Node.js API, Async_hooks, Whatwg URL 파서,보다 안전한 버퍼 등을 포함하여 JavaScript 커뮤니티에 많은 중요한 개선을 가져옵니다. 여기서이 릴리스의 다른 가장 중요한 측면에서 이러한 기능과 다른 방법으로 업데이트 할 것입니다.

Node.js 8은 코드 이름 탄소 아래에서 해제되며 현재에서 사용할 수 있습니다. node.js 사이트 ...에 유지 보수 모드로 들어가기 전에 다른 18 개월 동안 적극적으로 작동 (새로운 기능, 버그 수정, 보안 개선 및 NPM 업데이트가 없음). 이전 릴리스와 마찬가지로 유지 관리 모드 릴리스에서는 중요한 보안 업데이트 및 버그 수정 만 수신합니다.

  • 20 자바 스크립트 도구를 날려 버리십시오

node.js가 주변에 있으므로 런타임이 수신 된 가장 큰 업데이트 중 하나이므로 기본 부가 기능이 작성되는 방법을 변경하고 추가 보안 및 성능 향상을 변경합니다.

Risingstack 훈련, 컨설팅 또는 개발로 4 년간 노드 .JS로 성공할 수 있도록 돕고 있습니다. 우리가 가진 가장 큰 투쟁 중 하나는 프로젝트에 기본 종속성을 추가하고있었습니다.

node.js 8 이전의 응용 프로그램이 기본 코드가있는 모듈에 종속 된 경우, 주요 새 노드 .js 버전이 도착할 때마다 응용 프로그램 관리자가 종속성을 다시 컴파일해야했습니다. 운이 좋았다면 그들은 처음에 일했습니다.

이 프로세스는 엄청난 작업 모듈 관리자가 호환되지 않는 노드 .js 버전에서 모듈을 작동시켜 주로 NAN (node.js 원시 추상 조각)이라는 모듈의 도움을 받아야합니다.

이 프로세스는 많은 회사가 컴파일 될 수 없으면 많은 회사가 업데이트되지 않고 모듈 유지 관리자에 거대한 추가 작업 부하를 넣을 수 있으므로 이상적입니다. 이 문제를 해결하기 위해 Node.js API (또는 N-API)가 도입되었습니다.

01. Node.js API를 입력하십시오

Machine agnostic: Native modules now work with Microsoft’s Chakra as well as different Node.js versions

기계 agnostic : 현재 Microsoft의 차크라와 다른 Node.js 버전으로 작동합니다.

node.js API는 node.js 8의 가장 중요한 개선 중 하나입니다. 가상 시스템 불가지론을 만들기 위해 잘 정의 된 ABI (응용 프로그램 바이너리 인터페이스)를 노드에 제공합니다. 즉, 네이티브 모듈은 Google의 V8 JavaScript 엔진을 사용하여 다른 Node.js 버전과 함께 작동 할뿐만 아니라 Microsoft의 Chakra와도 사용할 수 있습니다.

지금은 N-API가 실험 상태에 있으며, 이는 구현 및 API 모두에 상당한 변경이 발생할 수 있습니다. 이와 함께 원시 모듈 관리자는 새로운 인터페이스를 시험 해보고 피드백을 제공하는 것이 좋습니다.

모듈 유지 관리자 인 경우 기본 모듈 버전과 병렬로 N-API 버전의 모듈을 릴리스 할 수 있습니다. 이렇게하려면 공식 권장 사항은 NPM에 N-API 태그가있는 모듈 버전을 게시하는 것입니다.

N-API 버전을 게시하려면 다음을 수행해야합니다.

  1. NON-N-API 버전을 정상으로 게시합니다.
  2. N-API 버전을 게시하십시오.
  • DASH와 THE DASH를 추가하여 PACKAM.JSON 파일에서 버전을 업데이트하십시오. Napi 태그 - 이전에 1.0.0이 있으면 1.0.0-NAPI가됩니다.
  • NPM 게시를 사용하여 NPM에 게시하십시오 - 태그 N-API.

이렇게하면 N-API 버전이 최신 릴리스가되지 않도록하므로 누군가가 모듈을 설치하는 경우 기본적으로 비 -PI 버전을 얻을 수 있습니다.

원사, Facebook 엔지니어가 만든 패키지 관리자는 2016 년 10 월에 출시되었습니다. 공식 NPM 고객의 몇 가지 단점을 해결하려고 시도했으며, 주로 더 많은 성능과 결정 론적으로 옮겨졌습니다. 이러한 혁신의 대부분은 NPM 5에도 특징입니다.

02. NPM 5에서 인사 하신다고 말합니다

원사와 마찬가지로 NPM 5는 프로젝트에 새로운 종속성을 설치할 때마다 잠금 파일 메커니즘을 도입했으며 자동으로 추가되지 않습니다. package.json. ,하지만 새 파일이 호출되었습니다 package-lock.json. 게다가.

그 차이점이 무엇인지 물어볼 수 있습니다 package-lock.json. npm-shrinkwrap.json. , NPM-shinkwrap이 영원히 이후 NPM에 있었기 때문에? 긴 이야기가 짧고, 그들은 본질적으로 동일하지만 package-lock.json. 자동으로 생성됩니다.

그들의 목적은 귀하의 패키지에 대해 어떤 종속성 트리 NPM이 작성 해야하는지 정확히 설명하는 것입니다. 둘 다 가지고 있다면, npm-shrinkwrap. 우선합니다. NPM의 권고 사항을 기반으로 사용해야합니다 npm-shrinkwrap.json. 게시하려는 경우 모듈 소비자가 사용할 수 있습니다. 반면에, 내부적으로 Package-Lock.json을 사용해야합니다. 심지어 Repositories로 확인하십시오.

그러나 NPM 5 개선은 새 버전으로 잠금 파일을 추가하여 중지되지 않았습니다. 설치중인 모든 모듈은 자동으로 저장되며 둘 다에 모두 추가됩니다. package.json. package-lock.json. 파일.

NPM 스크립트가 작동하는 방식은 또한 조금 변경되었습니다. 우선, 사전 설치된 스크립트는 이제 다른 모든 것보다 먼저 실행되므로 CLI가 실제로 읽기 전에 node_modules 디렉토리를 수정할 수 있습니다. 이 외에도 두 개의 새로운 스크립트가 추가되었습니다 - 프레프 백 및 포스트 팩. 둘 다 NPM 팩과 NPM을 출시하지만 NPM 설치에는 사용할 수 없습니다.

Node.js의 핵심은 JavaScript 코드를 해석하고 ByteCode를 작성하고 응용 프로그램을 실행할 수있게 해주는 JavaScript 엔진입니다. New Node.js 8 릴리스에서는 업데이트되었습니다.

03. 업데이트 된 JavaScript 엔진

Big news: Node.js will be able to update the V8 engine without a major release

큰 뉴스 : node.js는 주요 릴리스없이 V8 엔진을 업데이트 할 수 있습니다.

업데이트 된 V8 엔진을 사용하면 주요 성능 향상이 도입되지만 더 중요한 것은 순환 호환 응용 프로그램 바이너리 인터페이스를 보장합니다. 즉, node.js는 주요 노드 .js 릴리스없이 V8 엔진을 업데이트 할 수 있음을 의미합니다.

V8 엔진의 최신 버전이 새로운 컴파일러 파이프 라인을 소개하면서 Node.j의 성능 향상을 도입 할 수있는 새로운 버전의 새로운 버전이 발생할 수 있으므로 이것은 중요합니다. 이 업데이트는 원래 노드 8의 릴리스 날짜가 연기 된 이유가 중요했습니다.

현재 파이프 라인은 너무 복잡하고 새로운 언어 기능을 소개하는 것은 일반적으로 파이프 라인의 여러 부분을 만지는 것을 의미합니다. 새로운 파이프 라인을 사용하면 훨씬 더 간단해질 것입니다.

새로운 인터프리터, 새로운 최적화 컴파일러 인 새로운 인터프리터 및 Turbofan은 거의 3 년 반 동안 개발 중이 었습니다. 그들은 새로운 언어 기능이 지어지는 기초입니다. 여기에는 Google의 V8 팀이 실제 JavaScript 응용 프로그램을 측정하는 것으로 수집 된 경험이 포함됩니다.

04. 환영 비동기 후크

비동기 후크가 무엇인지 더 잘 이해하기 위해 단계를 다시 가져 와서 계속해서 지속적인 스토리지를 먼저 사용할 수있게 해 봅시다. 스레드 프로그래밍에서 스레드 로컬 스토리지처럼 작동하지만 node.js에서 콜백을 사용하여 컨텍스트를 전달합니다.

데이터베이스에서 제품을 가져 오는 응용 프로그램을 작성한 다음 나중에 HTML 응답으로 보내 드리겠습니다.

 const creatEnAmespace = 요구 ( '연속 로컬 저장소'). createNamespace
const 세션 = createNamespace ( 'my-app-session')
const db = require ( './ db.js')
기능 OnRequest (옵션, 다음) {
  DB.FETCHUSERBYID (옵션 .ID, 함수 (오류, 사용자) {
    if (error) {
      다음 (오류)
    }
    session.set ( '사용자', 사용자)
    다음()
  }) 

나중에 사용자 객체에 액세스하려면 해당 사용자 개체에 액세스해야합니다. 로컬 저장소에서 가져 오는 것입니다.

 const getNamespace = 요구 ( '계속 - 로컬 저장소'). GetNamespace
const 세션 = getNamespace ( '내 세션')
const render = require ( './ render.js')
기능 완료 (응답) {
  const user = session.get ( '사용자')
  렌더링 ({사용자 : 사용자}). 파이프 (응답)
} 

이 기술은 RisingStack의 추적과 같은 응용 프로그램 성능 모니터링 공급자가 실행 컨텍스트를 유지하고 프로덕션 시스템에서 모니터링 정보를 수집하는 것과 같은 응용 프로그램 성능 모니터링 공급자가 광범위하게 사용할 수 있습니다.

비동기 후크를 사용하면 유사한 기능이 Node.js 코어로 이동됩니다. 이는 비동기 요청 및 핸들러를 수명주기를 통해 추적하는 데 도움이됩니다. 그만큼 Async_hooks. 모듈은 노드 .js 응용 프로그램에서 작성된 비동기 리소스의 수명을 추적하는 콜백을 등록하는 API를 제공합니다.

05. 개선 된 약속 지원

Node.js 8 이전에는 약속을 사용하는 응용 프로그램에서 핵심 모듈을 사용하고 싶은 경우 수동으로 핵심 모듈을 래핑하여 동일한 방식으로 사용할 수 있도록했습니다. 그것은 다음과 같이 보였습니다 :

const fs = 요구 ( 'fs')
함수 ReadFilePromise (... args) {
  새 약속 반환 ((해결, 거부) = & gt; {
    fs.readfile (... args, (err, result) = & gt; {
      if (err) {
        반환 확인 (Err)
      }
      해결 (결과)
    })
  })
}
ReadFilePromise ( './ package.json', 'UTF-8')
  .then ((res) = & gt; console.log (res))
  .catch ((Err) = & gt; console.log (Err)) 

node.js 8을 사용하면 새로운 헬퍼 메소드가 UTIL 코어 모듈에 추가됩니다. 표준 Node.js 콜백 스타일 API를 약속을 리턴하는 함수로 래핑 할 수 있습니다.

이 기능을 사용하면 위의 스 니펫이 단순화되어 다음이됩니다.

 const fs = 요구 ( 'fs')
const promisify = 요구 ( 'util'). 추위
ReadFilePromise = 약속 (fs.readfile)
ReadFilePromise ( './ package.json', 'UTF-8')
  .then ((res) = & gt; console.log (res))
  .catch ((Err) = & gt; console.log (Err)) 

06. 더 안전한 버퍼

Node.js 버전 8 이전에는 새 버퍼 (Number) 생성자를 사용하여 할당 된 버퍼는 0으로 메모리 공간을 초기화하지 않았습니다. 결과적으로 새로운 버퍼 인스턴스에는 중요한 정보가 포함될 수 있으므로 심각한 보안 문제가 발생하여 몽구스, WS 또는 요청 모듈과 같은 대중적인 모듈조차도 영향을 받았습니다.

그러나 우리가 어떻게 거기에 도달 했습니까? 브라우저에서 서버 측으로 JavaScript를 이동했을 때 빠르고 쉬운 데이터 처리가 필요했습니다. 버퍼 클래스가 추가되었습니다. 버퍼는 바이너리 데이터의 변경 가능한 배열입니다. 새 버퍼의 크기를 묻는 생성자와 함께 사용하면 메모리 공간을 예약했지만 청소하지 않았습니다.

서버가 동시에 여러 사용자에게 서비스 할 수 있으므로 (브라우저와 달리) 갓 할당 된 메모리 공간이 다른 사용자 (비밀번호도!)의 중요한 정보가 포함되어 있으며 잠재적으로 공격자에게 노출 될 수 있습니다.

새로운 버퍼 창조의 성과를 높이기위한 의도적 인 결정 이었지만, 우리 대부분의 경우 의도 된 용도가 아니 었습니다. 이 때문에 Node.js 8부터 새 버퍼 (Number) 또는 버퍼 (숫자)를 사용하여 할당 된 버퍼가 자동으로 0으로 채워집니다.

07. 디버깅의 변경

node.js 8, node.js 응용 프로그램을 디버깅하려면 가장 쉬운 솔루션 중 하나는 노드 디버그를 사용하여 기본 제공 디버거를 시작하는 것이 었습니다. index.js. node.js 8을 사용하면 노드 검사기로 제거되고 대체됩니다. CLI 디버거를 계속 사용할 수는 있지만 곧 제거됩니다.

이제부터는 노드를 사용해야합니다 - 인덱스 index.js. 또는 노드 - 인센트 - BRK index.js. 디버거가 응용 프로그램의 첫 번째 줄에 중단 점을 넣으려면 실행하면 Google 크롬이 디버거를 연결하는 데 사용할 수있는 WebSocket 링크를 받게됩니다.

너는까지 가야한다 크롬 : // 검사 Chrome 브라우저에서는 실행중인 노드 설명서 응용 프로그램을 자동으로 인식하여 연결할 수 있습니다. 프로세스에 연결 한 후에는 Chrome의 디버거가 실행중인 node.js 응용 프로그램을 검사합니다.

08. 정적 오류 코드 소개

이전에는 런타임에받은 오류를 확인하고 그에 따라 오류를 확인하고 대부분의 경우 오류 메시지를 확인해야했습니다. 오류 메시지가 새 노드 .js 버전으로 변경되었을 수 있으므로 오류가 발생하기 쉽습니다.

node.js 8을 사용하면 정적 오류 코드가 대부분의 오류에 할당되었습니다. 오류의 메시지가 수행 되더라도 이러한 오류 코드가 변경되지 않아도됩니다. ...에

예를 들어 새로 소개 된 것입니다 Whatwg URL API. 던질 것입니다 err_invalid_url. 매개 변수가 유효한 URL이 아닌 경우 다음 스 니펫의 오류가 발생했습니다.

 const url = 요구 ( 'URL'). URL
const myUrl = new url ( '/ foo') 

알 수 있듯이 Node.js 8 업데이트의 릴리스는 JavaScript 커뮤니티에 대한 새로운 새롭고 흥미로운 개선을 가져 왔습니다. 이 모든 새로운 기능을 직접 실험하기 위해 nodejs.org. node.js 8 바이너리를 다운로드하고 새 툴 세트로 재생을 시작하십시오!

이 기사는 원래 나타났습니다 그물 잡지 문제 296. 여기 그것을 구입하십시오 ...에

관련 기사:

  • 20 Node.js 모듈을 알아야합니다
  • 웹 디자이너와 DEVS에 대한 30 개의 크롬 확장
  • 웹 사이트 프로토 타입을 구축하는 3 가지 톱 방법

어떻게 - 가장 인기있는 기사

Google 슬라이드 : 문서를 디자인하는 방법

어떻게 Sep 13, 2025

(이미지 크레디트 : Google) Google 슬라이드가 점점 더 인기가 높아지고 있습니다. 세계가 �..


시각적 개발 팁 : 아트웍으로 이야기를 전하십시오

어떻게 Sep 13, 2025

(이미지 크레디트 : Simon Baek) 시각적 개발이란 무엇입니까? 글쎄, 그것은 이야기를 시각�..


Procreate 자습서 : 새로운 도구 탐색

어떻게 Sep 13, 2025

내가 처음 발견되었을 때 나는 디지털 방식으로 페인트 할 수있게 해주는 휴대용 장치를 갖는 아�..


Adobe Capture CC를 사용하는 방법

어떻게 Sep 13, 2025

Adobe Capture CC는 사진을 찍어 글꼴과 색상을 찾을 수있는 환상적인 앱입니다. 예를 들어, 좋아하는 잡지에서 글꼴이 어떤 글꼴을 사용했는지 궁금..


비디오 게임을위한 놀이 가능한 아바타 디자인

어떻게 Sep 13, 2025

이것을 위해 포토샵 튜토리얼 , 나는 놀이 가능한 인간, 여성을 만들 것입니다 �..


친 화성 디자이너가있는 레트로 로고를 만드는 방법

어떻게 Sep 13, 2025

사용하기 쉽고 벨트 아래에 많은 창조적 인 도구로, 친 화성 디자이너는 훌륭한 대안입니다. ..


오일에 정력적 인 경치를 칠하십시오

어떻게 Sep 13, 2025

기재 SARAH는 50x50cm �..


디지털 아트에서 화려한 느낌을 만듭니다

어떻게 Sep 13, 2025

디지털 페인팅은 역사적으로 너무 인공적으로 보이기 때문에 오늘날 광범위한 소프트웨어 범위�..


카테고리