时隔一年,Node.js 12 如约而至,正式发布第一个 Current 版本。它将从2019年10月开始进入长期支持(LTS)版本直到2022年4月。前端
该版本带来的新特性:浏览器
Node维护了着两条发布流程线:奇数版本每一年的10月份发布,偶数版本第二年的4月份发布。当一个奇数版本发布后,最近的一个偶数版本会当即进入LTS维护计划,一直持续18个月(LTS Start )。再以后会有12个月的延长维护期(Maintenance Start)。缓存
这两个期间能够支持的变动是不同的:安全
就目前而言,Node.js 6.x 和 8.x 将在 2019 年底结束 LTS 的支持,你们尽快升级到 10.x 吧。异步
自从ES6中的标准化以来,import/ exportsyntax已成为JavaScript开发人员的首选模块语法,而Node团队一直在努力实现本机化。实验性支持从第8阶段的Node 8.0开始,并在最新的Node版本上迈出了重要的一步。全部主流浏览器都支持 ECMAScript模块<script type="module">
,所以这是Node的一个巨大更新。async
// default exports import module from 'module' // named exports import { namedExport } from 'module' // namespace exports import * as module from 'module'
本次版本更新,也带几个不错的特性:函数
随着 V8 的更新,不少 ES 的新规范也落地了,好比支持类的私有变量。工具
class Greet { #name = 'World'; get name() { return this.#name; } set name(name) { this.#name = name; } sayHello() { console.log(`Hello, ${this.#name}`); } }
在类的外部或去#name
变量会抛出异常性能
const greet = new Greet() greet.#name = 'NewName'; // -> SyntaxError console.log(greet.#name) // -> SyntaxError
Node 将在构建时间以前为内置库构建代码缓存并将其嵌入为二进制文件。主线程可以使用此代码缓存,将启动时间缩短30%。优化
默认的 HTTP 解析器切换为 llhttp ,性能提高显著
Node 12 如今支持TLS 1.3,它提供更高的安全性和更短的延迟。TLS 1.3已经成为协议的一个重大更新,而且正在积极地在Web上集成。经过实施TLS 1.3,Node应用程序将增长最终用户隐私,同时经过减小HTTPS握手所需的时间来提升请求性能。此外,默认状况下已禁用TLS 1.0和1.1,而且crypto库已删除已弃用的函数。
之前使用默认的V8堆大小,至关于700MB(32位系统)或1400MB(64位系统)。Node如今将根据可用内存肯定堆大小,这将确保它不会使用超过容许的资源。
Node 12提供了生成堆转储的功能,从而能够更轻松地调查内存问题。
本文首发于公众号「前端新视界」,分享前端资讯、技术干货、编码人生,欢迎关注。