专栏首页IMWeb前端团队Node 10 新功能概览(译)

Node 10 新功能概览(译)

本文作者:IMWeb zzbozheng 原文出处:IMWeb社区 未经同意,禁止转载

以代号“Dubnium”为代表的Node 10于2018年4月24日发布,并将于2018年10月进入长期支持(LTS)。JavaScript开发人员一直在激动地等待今天,今天我们来看看这个版本带来的新特征。

Adding Error Codes

现在,Node中的错误信息已被标准化。

在Node环境中,处理错误信息一直是一个痛苦的工作。 以前,它们只包含一个没有其他标识符关联的字符串消息。 如果开发人员希望程序根据特定消息采取调试操作,唯一的办法是对错误内容进行字符串比较。

由于错误信息的处理需要精确的字符串匹配,因此即使对消息的最小更新也无法添加到下一个主要节点版本,以便它不会中断SemVer。 通过将错误从消息中解耦出来,它将使开发人员更轻松地工作,并允许Node在不引入重大更改的情况下改进错误消息。 要了解更多信息,请阅读Michael Dawson的文章节点错误代码

N-API 不再是实验性功能

Node文档将N-API描述为构建本地插件的API。 它独立于底层的JavaScript运行时(ex V8),并作为Node.js本身的一部分进行维护。 这个API将是跨Node.js版本稳定的应用程序二进制接口(ABI)。 它旨在将Addons与基础JavaScript引擎中的更改隔离,并允许为一个版本编译的模块在更高版本的Node.js上运行,而无需重新编译。

之前在Node 8中实验性地引入了N-API,并将从Node 10开始稳定。在Node版本之间升级不再会引起模块损坏。 它也将向后移植以实现Node.js v6.x和v8.x的兼容性。

原生的 Node HTTP/2 变得更稳定

Node 8 引入了一个实验性的 HTTP/2 模块,这次是对 Node 的一次很好的升级。 HTTP/2 改进了标准的 HTTP 协议:

多路复用 单一连接 服务器推送 优先级 头压缩 脱离实验阶段后,原生的 HTTP/2 模块将有助于改进节点服务器和它们提供的Web体验。

V8 引擎 v6.6 的性能改进

Node 停止使用 Chromium 中的 V8 JavaScript引擎,并且 Node.js v10 使用了最新版本的V8 引擎。 对于浏览器而言,Chrome 66 提供的V8 Engine v6.6在JavaScript的解析和编译时间方面可以减少约20-40%。 因此,我们可以预期 Node 10 也会在这方面有更大的收益。 而且它还提供异步生成器和阵列性能改进。

速度才是最重要的,最新的版本并不会让人失望。 查看V8团队的文章以了解更多信息

更好地支持ES模块(ESM)

// ESM
import pkg from “./pkg”
export default { a, b: 2 }
vs.
// CJS
const pkg = require(“./pkg”)
module.exports = { a, b: 2 }

虽然我们在 Node 10 中没看到对ES模块的全部支持,但他们仍在努力完善。

Node.js 一直在使用CommonJS(CJS),它是 require 和 module.exports 语法。 在2015年的史诗级ES6版本中,推出了一种新的模块系统,即ECMAScript模块(ESM)。 作为ECMA的官方实施以及开发人员的热爱和广泛采用,Node一直致力于实施ESM规范。

将ESM集成到Node中并不是一个完全平滑的路径,因为它与当前系统冲突。 然而,对齐的能力是非常重要的,Node正在努力提供解决方案。 如果您想了解更多信息,Gil Tayar 就此话题写了一篇很棒的文章

改进了诊断追踪

Node 10 添加了跟踪事件,为开发人员提供更多关于其Node.js应用程序可见性。 这种新的功能可以提供有关时间和性能问题的改进指标。 API 允许用户在运行时打开或关闭事件,从而可以根据需要诊断问题。

在启动 node 应用时,添加参数--trace-event-categories可以将其打开,可以文档里了解到更多。

配备npm 6

npm最近从v5.7升级到v6.0,并且Node 10将立即提供更新。npm的这一版本增加了所有各种改进,包括性能,安全性和稳定性。 在他们的博客上了解更多关于npm v6的信息

升级到OpenSSL 1.1.0版

Node配备了现代加密支持,可支持备受期待的 ChaCha20 密码和 Poly1305 验证器。 TLS 1.3最近已完成定稿,待 Node.js v10 在10月份发布 LTS 时,它将会完全支持该标准。

fs 也可以有 promise

与文件系统交互是许多 Node 应用程序的主要组成部分,Node 10将承诺发行fs包的实验版本。 以前这些函数通过回调处理异步操作,但可以使用Node 8附带的util.promisify()函数进行转换。现在,开发人员可以在不需要额外步骤的情况下使用带有promise的fs。

原文

https://levelup.gitconnected.com/whats-new-in-node-10-ad360ae55ee4

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • IMWebConf2017讲师系列之狼叔

    ? 狼叔(Qunar前端架构师) 桑世龙,江湖人送称号「狼叔」,天津空弦科技 CTO,开源项目 Moajs 作者,Node.js 技术传道者。曾就职在新浪、...

    IMWeb前端团队
  • JavaScript: 2015年度回顾(译文)

    本文作者:IMWeb coolriver 原文出处:IMWeb社区 未经同意,禁止转载 本文为 《 2015 in review》 一文的中文译文,...

    IMWeb前端团队
  • JavaScript: 2015年度回顾(译文)

    JavaScript刚刚经历了标志性的一年。除了在2015年5月达到了20岁“高龄”,它产生了大量新鲜技术,各种各样的项目,吸引了越了越多人的兴趣,并且这种成长...

    IMWeb前端团队
  • Node.js从入门到深入——Node.js的了解

    蛋未明
  • Node.js 基础

    梨涡浅笑
  • 第一章:NodeJS 概述

    Node 概述 什么是 Node Node.js® is a JavaScript runtime built on Chrome's V8 JavaScrip...

    老马
  • 【专业技术】Node.js 究竟是什么?

    简介 如果您听说过 Node,或者阅读过一些文章,宣称 Node 是多么多么的棒,那么您可能会想:“Node 究竟是什么东西?” 即便是在参阅 Node 的主页...

    程序员互动联盟
  • 深入浅出 Nodejs ( 一 ) :Nodejs 的简介

    我认为 Node 是一门独具风格的技术,它的特点很有意思,本章我们主要讲 Node 的特点,Node 应用场景以及 Node 的使用者。

    serena
  • 来,告诉你Node.js究竟是什么?

    如果你有一定的前端基础,比如 `HTML、CSS、JavaScript、jQuery;那么,Node.js 能让你以最低的成本快速过渡成为一个全栈工程师(我称这...

    coder_koala
  • 今天你为什么更应该学习JavaScript?

    几周前的NodeSummit 2016结束后,给人感觉是毫无疑问Javascript和特别是Node正在蚕食世界。 NodeSummit提供几个案例学习显示,...

    春哥大魔王

扫码关注云+社区

领取腾讯云代金券