Node.js 15의 공식 버전이 출시되어 현재 안정 릴리스인 Node.js 14를 대체하게 됩니다.
이틀 전, Node.js는 Node.js 15의 공식 버전을 공식 출시했습니다. Node.js 15는 현재 안정 릴리스인 Node.js 14를 대체할 예정이며, 이번 달 말에 업그레이드될 예정입니다. 이것은 LTS( 장기 지원) 버전. Node.js 15의 최신 기능을 경험하고 싶다면 공식 웹사이트에서 다운로드할 수 있습니다.
동영상 튜토리얼 추천: nodejs 튜토리얼
그렇다면 Node.js 15는 어떤 새로운 기능과 특징을 가져오나요? 주로 다음 측면에 반영됩니다.
- AbortController
- N-API 버전 7
- npm 7
- 처리되지 않은 거부는 기본적으로 발생합니다.
- QUIC
- V8 8.6
AbortController
A tController 인터페이스는 컨트롤러를 나타냅니다. object 를 사용하여 개발자가 필요에 따라 하나 이상의 웹 요청을 중단할 수 있도록 Node.js 15에서는 AbortController의 실험적 구현을 추가했습니다. AbortController는 아래와 같이 AbortController 웹 API에 따라 선택된 Promise 기반 API에서 나가는 요청 신호를 취소하는 전역 유틸리티 클래스입니다.
const ac = new AbortController(); ac.signal.addEventListener('abort', () => console.log('Aborted!'), { once: true }); ac.abort(); console.log(ac.signal.aborted); //Prints True
위의 예에서 abortController.abort() 메서드가 호출되면 중단 이벤트가 발생하고 AbortController는 중단 이벤트를 한 번만 트리거합니다. 또한 AbortSignal에 연결된 이벤트 리스너는 { once: true}
매개변수 옵션(또는 EventEmitterAPI의 Once()와 동일)을 사용하여 중단 이벤트가 처리되면 이벤트 리스너가 제거되도록 해야 합니다.
AbortController의 Node.js API 문서는 AbortController를 참조하세요.
N-API 7
N-API는 기본 JavaScript 런타임 환경(예: V8)과 관계없이 Node.js 자체의 일부로 기본 플러그인을 구축하기 위한 API입니다. 이 API는 Node.js 버전 전체에서 컴파일된 ABI(Application Binary Interface)의 안정적인 버전으로 사용됩니다. 이는 기본 JavaScript 엔진의 변경 사항에서 애드온 플러그인을 격리하도록 설계되었으며, 한 버전에서 컴파일된 모듈을 다시 컴파일하지 않고도 이후 버전의 Node.js에서 실행할 수 있습니다.
N-API는 Node.js 버전과 다양한 컴파일러 레벨 간의 ABI(애플리케이션 프로그래밍 인터페이스)의 안정성을 보장하는 C 언어 API입니다. C++ API를 사용하는 것이 더 쉬울 수 있습니다. C++ 사용을 지원하기 위해 Node.js는 인라인 가능한 C++ API를 제공하는 node-addon-api라는 C++ 래퍼 모듈을 사용합니다. node-addon-api를 사용하여 구축된 바이너리는 Node.js에서 내보낸 C 함수 기호를 기반으로 하는 N-API 인터페이스를 사용합니다. node-addon-api는 N-API에 대한 호출을 작성하기 위한 코드를 작성하는 보다 효율적인 방법입니다.
Node.js의 N-API에 대한 자세한 내용은 다음을 참조하세요. N-API를 사용한 C/C++ 애드온
다음은 node-addon-api를 사용하는 예입니다.
Object obj = Object::New(env); obj["foo"] = String::New(env, "bar");
napi_status status; napi_value object, string; status = napi_create_object(env, &object); if (status != napi_ok) { napi_throw_error(env, ...); return; } status = napi_create_string_utf8(env, "bar", NAPI_AUTO_LENGTH, &string); if (status != napi_ok) { napi_throw_error(env, ...); return; } status = napi_set_named_property(env, object, "foo", string); if (status != napi_ok) { napi_throw_error(env, ...); return; }
이 업데이트된 N-API 7은 이전 주요 버전 이후 첫 번째 새 버전으로, ArrayBuffers에 대한 관련 콘텐츠를 제공합니다.
npm 7
Node.js 15는 npm의 새로운 주요 버전인 npm 7과 함께 제공됩니다. npm 7에는 npm 작업 공간 및 새로운 package-lock.json 형식을 포함한 많은 새로운 기능이 있습니다. npm 7에는 Yarn.lock 파일 지원도 포함되어 있습니다. npm 7의 큰 변화 중 하나는 피어 종속성의 기본 설치입니다.
처리되지 않은 거부는 기본적으로 발생합니다.
Node.js 15부터 unhandledRejection의 기본 모드가 throw(이전에는 경고)로 변경되었습니다. throw 모드에서 unhandledRejection 후크가 설정되지 않은 경우 unhandledRejection은 포착되지 않은 예외로 발생합니다. unhandledRejection 후크가 있는 사용자는 동작 변화를 볼 수 없으며 --unhandled-rejections=mode 프로세스 플래그를 사용하여 모드를 전환할 수 있습니다.
많은 이전 버전의 Node.js는 기본적으로 UnhandledPromiseRejectionWarning을 내보냈으며 "Node.js User Insights: Unhandled Promise Rejections" 설문조사 결과에 따라 Node.js TSC는 모드를 throw로 전환하는 데 동의했습니다.
QUIC
QUIC은 Google에서 개발한 UDP 기반 저지연 인터넷 전송 계층 프로토콜입니다. HTTP/3의 기본 전송 프로토콜입니다. 또한, 2016년 11월 IETF(International Internet Engineering Task Force)는 첫 번째 QUIC 워킹 그룹 회의를 개최하여 업계의 큰 관심을 끌었습니다. 이는 QUIC가 차세대 전송 계층 프로토콜로 자리잡는 데 중요한 단계를 밟기 시작했음을 의미합니다. 한편 QUIC에는 TLS 1.3 보안, 흐름 제어, 오류 수정, 연결 마이그레이션 및 멀티플렉싱이 내장되어 있습니다.
Node.js 15에는 --experimental-quic 구성 플래그를 사용하여 Node.js를 컴파일하여 활성화할 수 있는 QUIC에 대한 실험적 지원이 포함되어 있습니다. 예를 들어 코어 넷 모듈은 다음 코드를 사용하여 Node.js QUIC 구현을 노출합니다.
const { createQuicSocket } = require('net');
'use strict'; const key = getTLSKeySomehow(); const cert = getTLSCertSomehow(); const { createQuicSocket } = require('net'); // Create the QUIC UDP IPv4 socket bound to local IP port 1234 const socket = createQuicSocket({ endpoint: { port: 1234 } }); socket.on('session', async (session) => { // A new server side session has been created! // The peer opened a new stream! session.on('stream', (stream) => { // Let's say hello stream.end('Hello World'); // Let's see what the peer has to say... stream.setEncoding('utf8'); stream.on('data', console.log); stream.on('end', () => console.log('stream ended')); }); const uni = await session.openStream({ halfOpen: true }); uni.write('hi '); uni.end('from the server!'); }); // Tell the socket to operate as a server using the given // key and certificate to secure new connections, using // the fictional 'hello' application protocol. (async function() { await socket.listen({ key, cert, alpn: 'hello' }); console.log('The socket is listening for sessions!'); })();
QUIC에 대한 자세한 내용은 QUIC 문서를 참고하세요.
V8 8.6
V8 JavaScript 엔진이 V8 8.6으로 업데이트되었습니다(V8 8.4는 Node.js 14의 최신 버전입니다). 성능 조정 및 개선 외에도 V8 업데이트는 다음과 같은 언어 기능을 제공합니다.
Promise.any()——MDN
Promise.any() 接收一个Promise可迭代对象,只要其中的一个 promise 成功,就返回那个已经成功的 promise 。如果可迭代对象中没有一个 promise 成功(即所有的 promises 都失败/拒绝),就返回一个失败的 promise 和AggregateError类型的实例,它是 Error 的一个子类,用于把单一的错误集合在一起。
Promise.any()的参考文档如下所示:Promise.any()
AggregateError——MDN
AggregateError主要用于操作报告多个错误被抛出的场景,语法格式如下:
new AggregateError(errors[, message])
捕获一个AggregateError的示例代码如下:
Promise.any([ Promise.reject(new Error("some error")), ]).catch(e => { console.log(e instanceof AggregateError); // true console.log(e.message); // "All Promises rejected" console.log(e.name); // "AggregateError" console.log(e.errors); // [ Error: "some error" ] });
创建一个AggregateError的示例代码如下:
try { throw new AggregateError([ new Error("some error"), ], 'Hello'); } catch (e) { console.log(e instanceof AggregateError); // true console.log(e.message); // "Hello" console.log(e.name); // "AggregateError" console.log(e.errors); // [ Error: "some error" ] }
详细参考文档:AggregateError
String.prototype.replaceAll()——MDN
replaceAll() 方法是返回一个新字符串,新字符串所有满足 pattern 的部分都已被replacement 替换。pattern可以是一个字符串或一个 RegExp, replacement可以是一个字符串或一个在每次匹配被调用的函数。
const p = 'The quick brown fox jumps over the lazy dog. If the dog reacted, was it really lazy?'; const regex = /dog/gi; console.log(p.replaceAll(regex, 'ferret')); // expected output: "The quick brown fox jumps over the lazy ferret. If the ferret reacted, was it really lazy?" console.log(p.replaceAll('dog', 'monkey')); // expected output: "The quick brown fox jumps over the lazy monkey. If the monkey reacted, was it really lazy?"
详细内容参考:String.prototype.replaceAll()
安利升级
另外,随着 Node.js 15 新版本的发布!官方希望开发者尽快的进行升级,并将遇到的问题反馈就给官方,。当然,开发者还可以使用 Node.js 15 测试你的应用程序和模块,以确保你的项目与最新的 Node.js 特性和更改兼容。
并且,Node.js官方也开始计划升级到 Node.js 14 ,它将在下周升级到 LTS,支持会持续到直到 2023 年 4 月。还要注意的是,Node.js 10 将于 2021 年 4 月结束生命周期。因此,如果你仍在使用 Node.js 10,我们建议你开始计划升级。
原文链接:https://medium.com/@nodejs/node-js-v15-0-0-is-here-deb00750f278
更多编程相关知识,请访问:编程入门!!
위 내용은 Node.js 15의 공식 버전이 출시되어 현재 안정 릴리스인 Node.js 14를 대체하게 됩니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP와 Vue: 프론트엔드 개발 도구의 완벽한 조합 오늘날 인터넷이 빠르게 발전하는 시대에 프론트엔드 개발은 점점 더 중요해지고 있습니다. 사용자가 웹 사이트 및 애플리케이션 경험에 대한 요구 사항이 점점 더 높아짐에 따라 프런트 엔드 개발자는 보다 효율적이고 유연한 도구를 사용하여 반응형 및 대화형 인터페이스를 만들어야 합니다. 프론트엔드 개발 분야의 두 가지 중요한 기술인 PHP와 Vue.js는 함께 사용하면 완벽한 도구라고 볼 수 있습니다. 이 기사에서는 독자가 이 두 가지를 더 잘 이해하고 적용할 수 있도록 PHP와 Vue의 조합과 자세한 코드 예제를 살펴보겠습니다.

프론트엔드 개발 인터뷰에서 일반적인 질문은 HTML/CSS 기초, JavaScript 기초, 프레임워크 및 라이브러리, 프로젝트 경험, 알고리즘 및 데이터 구조, 성능 최적화, 크로스 도메인 요청, 프론트엔드 엔지니어링, 디자인 패턴, 새로운 기술 및 트렌드. 면접관 질문은 후보자의 기술적 능력, 프로젝트 경험, 업계 동향에 대한 이해를 평가하기 위해 고안되었습니다. 따라서 지원자는 자신의 능력과 전문성을 입증할 수 있도록 해당 분야에 대한 충분한 준비를 갖추어야 합니다.

JavaScript 튜토리얼: HTTP 상태 코드를 얻는 방법, 특정 코드 예제가 필요합니다. 서문: 웹 개발에서는 서버와의 데이터 상호 작용이 종종 포함됩니다. 서버와 통신할 때 반환된 HTTP 상태 코드를 가져와서 작업의 성공 여부를 확인하고 다양한 상태 코드에 따라 해당 처리를 수행해야 하는 경우가 많습니다. 이 기사에서는 JavaScript를 사용하여 HTTP 상태 코드를 얻는 방법과 몇 가지 실용적인 코드 예제를 제공합니다. XMLHttpRequest 사용

Django는 빠른 개발과 깔끔한 방법을 강조하는 Python으로 작성된 웹 애플리케이션 프레임워크입니다. Django는 웹 프레임워크이지만 Django가 프런트엔드인지 백엔드인지에 대한 질문에 답하려면 프런트엔드와 백엔드의 개념에 대한 깊은 이해가 필요합니다. 프론트엔드는 사용자가 직접 상호작용하는 인터페이스를 의미하고, 백엔드는 HTTP 프로토콜을 통해 데이터와 상호작용하는 서버측 프로그램을 의미합니다. 프론트엔드와 백엔드가 분리되면 프론트엔드와 백엔드 프로그램을 독립적으로 개발하여 각각 비즈니스 로직과 인터랙티브 효과, 데이터 교환을 구현할 수 있습니다.

빠르고 효율적인 프로그래밍 언어인 Go 언어는 백엔드 개발 분야에서 널리 사용됩니다. 그러나 Go 언어를 프런트엔드 개발과 연관시키는 사람은 거의 없습니다. 실제로 프런트엔드 개발에 Go 언어를 사용하면 효율성이 향상될 뿐만 아니라 개발자에게 새로운 지평을 열어줄 수도 있습니다. 이 기사에서는 프런트엔드 개발에 Go 언어를 사용할 수 있는 가능성을 살펴보고 독자가 이 영역을 더 잘 이해할 수 있도록 구체적인 코드 예제를 제공합니다. 전통적인 프런트엔드 개발에서는 사용자 인터페이스를 구축하기 위해 JavaScript, HTML, CSS를 사용하는 경우가 많습니다.

Golang과 프런트엔드 기술의 결합: Golang이 프런트엔드 분야에서 어떤 역할을 하는지 살펴보려면 구체적인 코드 예제가 필요합니다. 인터넷과 모바일 애플리케이션의 급속한 발전으로 인해 프런트엔드 기술이 점점 더 중요해지고 있습니다. 이 분야에서는 강력한 백엔드 프로그래밍 언어인 Golang도 중요한 역할을 할 수 있습니다. 이 기사에서는 Golang이 프런트엔드 기술과 어떻게 결합되는지 살펴보고 특정 코드 예제를 통해 프런트엔드 분야에서의 잠재력을 보여줍니다. 프론트엔드 분야에서 Golang의 역할은 효율적이고 간결하며 배우기 쉬운 것입니다.

JavaScript에서 HTTP 상태 코드를 얻는 방법 소개: 프런트 엔드 개발에서 우리는 종종 백엔드 인터페이스와의 상호 작용을 처리해야 하며 HTTP 상태 코드는 매우 중요한 부분입니다. HTTP 상태 코드를 이해하고 얻는 것은 인터페이스에서 반환된 데이터를 더 잘 처리하는 데 도움이 됩니다. 이 기사에서는 JavaScript를 사용하여 HTTP 상태 코드를 얻는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 1. HTTP 상태 코드란 무엇입니까? HTTP 상태 코드는 브라우저가 서버에 요청을 시작할 때 서비스가

Django: 프론트엔드와 백엔드 개발을 모두 처리할 수 있는 마법의 프레임워크! Django는 효율적이고 확장 가능한 웹 애플리케이션 프레임워크입니다. MVC, MTV를 포함한 다양한 웹 개발 모델을 지원할 수 있으며 고품질 웹 애플리케이션을 쉽게 개발할 수 있습니다. Django는 백엔드 개발을 지원할 뿐만 아니라 프런트엔드 인터페이스를 빠르게 구축하고 템플릿 언어를 통해 유연한 뷰 표시를 구현할 수 있습니다. Django는 프론트엔드 개발과 백엔드 개발을 완벽한 통합으로 결합하므로 개발자가 전문적으로 학습할 필요가 없습니다.
