Maison  >  Article  >  interface Web  >  La version officielle de Node.js 15 est publiée et remplacera Node.js 14 en tant que version stable actuelle.

La version officielle de Node.js 15 est publiée et remplacera Node.js 14 en tant que version stable actuelle.

青灯夜游
青灯夜游avant
2020-10-22 19:57:424253parcourir

La version officielle de Node.js 15 est publiée et remplacera Node.js 14 en tant que version stable actuelle.

Il y a deux jours, Node.js a officiellement publié la version officielle de Node.js 15. Node.js 15 remplacera Node.js 14 en tant que version stable actuelle, qui sera mis à niveau vers une version LTS (Long Term Support) plus tard ce mois-ci. Si vous souhaitez découvrir les dernières fonctionnalités de Node.js 15, vous pouvez le télécharger depuis le site officiel.

La version officielle de Node.js 15 est publiée et remplacera Node.js 14 en tant que version stable actuelle.

Recommandation de tutoriel vidéo : tutoriel nodejs

Alors, quelles nouvelles fonctions et fonctionnalités Node.js 15 apporte-t-il ? Principalement reflété dans les aspects suivants :

  • AbortController
  • N-API version 7
  • npm 7
  • rejets non gérés émis par défaut
  • QUIC
  • V8 8.6

AbortController

L'interface AbortController représente un objet contrôleur, permettant aux développeurs d'abandonner une ou plusieurs requêtes Web selon les besoins, Node. js 15 ajoute une implémentation expérimentale d'AbortController. AbortController est une classe d'utilitaire globale qui annule les signaux de requête sortants dans certaines API basées sur Promise conformément à l'API Web AbortController, comme indiqué ci-dessous.

const ac = new AbortController();
ac.signal.addEventListener('abort', () => console.log('Aborted!'),
{ once: true });
ac.abort();
console.log(ac.signal.aborted);    //Prints True

Dans l'exemple ci-dessus, l'événement d'abandon sera émis lorsque la méthode abortController.abort() est appelée, et AbortController ne déclenchera l'événement d'abandon qu'une seule fois. De plus, les écouteurs d'événements attachés à AbortSignal doivent utiliser l'option de paramètre { once: true} (ou de manière équivalente once() de EventEmitterAPI) pour garantir qu'une fois l'événement d'abandon géré, l'écouteur d'événements est ensuite supprimé.

Pour la documentation de l'API Node.js d'AbortController, veuillez vous référer à : AbortController.

N-API 7

N-API est une API permettant de créer des plugins natifs qui est indépendante de l'environnement d'exécution JavaScript sous-jacent (tel que V8) et fonctionne dans le cadre de Node.js lui-même. . Cette API servira de version stable de l'interface binaire d'application (ABI) compilée dans les versions de Node.js. Il est conçu pour isoler les plugins Addons des modifications apportées au moteur JavaScript sous-jacent et permet aux modules compilés dans une version de s'exécuter sur une version ultérieure de Node.js sans avoir besoin d'être recompilés.

N-API est une API en langage C qui assure la stabilité de l'interface de programmation d'application (ABI) entre les versions de Node.js et les différents niveaux du compilateur. L'API C++ peut être plus facile à utiliser. Pour prendre en charge l'utilisation du C++, Node.js utilise un module wrapper C++ appelé node-addon-api, qui fournit une API C++ inlineable. Les binaires construits à l'aide de node-addon-api s'appuieront sur l'interface N-API basée sur les symboles de fonction C exportés par Node.js. node-addon-api est un moyen plus efficace d'écrire du code pour écrire des appels à N-API.

Pour plus d'informations sur la N-API de Node.js, veuillez vous référer à : Addons C/C++ avec N-API

Ce qui suit est un exemple d'utilisation de 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;
}

Cette N-API 7 mise à jour est la première nouvelle version depuis la version majeure précédente, apportant du contenu connexe sur ArrayBuffers.

npm 7

Node.js 15 est livré avec une nouvelle version majeure de npm, npm 7. npm 7 propose de nombreuses nouvelles fonctionnalités, notamment des espaces de travail npm et un nouveau format package-lock.json. npm 7 inclut également la prise en charge du fichier Yarn.lock. L'un des grands changements de npm 7 est l'installation par défaut des dépendances homologues.

les rejets non gérés sont lancés par défaut

À partir de Node.js 15, le mode par défaut pour unhandledRejection a été modifié en throw (anciennement warn). En mode throw, si le hook unhandledRejection n’est pas défini, unhandledRejection sera élevé à une exception non interceptée. Les utilisateurs avec un hook unhandledRejection ne devraient voir aucun changement de comportement et peuvent toujours utiliser l'indicateur de processus --unhandled-rejections=mode pour changer de mode.

Les versions précédentes de Node.js émettaient UnhandledPromiseRejectionWarning par défaut, et selon les résultats de l'enquête « Node.js User Insights : Unhandled Promise Rejections », le TSC de Node.js a accepté de changer de mode pour lancer .

QUIC

QUIC est un protocole de couche de transport Internet à faible latence basé sur UDP développé par Google. Il s'agit du protocole de transport de base de HTTP/3. De plus, en novembre 2016, l'IETF (International Internet Engineering Task Force) a organisé la première réunion du groupe de travail QUIC, qui a attiré l'attention de l'industrie, ce qui signifie que QUIC a commencé à franchir une étape clé pour devenir un protocole de couche de transport de nouvelle génération. QUIC, quant à lui, intègre la sécurité TLS 1.3, le contrôle de flux, la correction d'erreurs, la migration de connexion et le multiplexage.

Node.js 15 est livré avec un support expérimental pour QUIC, qui peut être activé en compilant Node.js avec l'option de configuration --experimental-quic. Par exemple, le module core net expose une implémentation Node.js QUIC avec le code suivant.

const { createQuicSocket } = require('net');
rrree

Pour plus d'informations sur QUIC, vous pouvez vous référer au document suivant : QUIC.

V8 8.6

Le moteur JavaScript V8 a été mis à jour vers la V8 8.6 (la V8 8.4 est la dernière version de Node.js 14). En plus des ajustements et améliorations des performances, la mise à jour V8 apporte les fonctionnalités linguistiques suivantes :

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

更多编程相关知识,请访问:编程入门!!

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer