時隔一年,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提供了生成堆轉儲的功能,從而能夠更輕鬆地調查內存問題。
本文首發於公衆號「前端新視界」,分享前端資訊、技術乾貨、編碼人生,歡迎關注。