Node.js 8有哪些重要功能和修复?
2019獨角獸企業重金招聘Python工程師標準>>>
5月30日12點,Node.js 8正式發布了,這個版本具有一系列新功能和性能改進,并且這些功能和改進將獲得長期支持(LTS)。
下面就來介紹Node.js 8版本中最重要的功能和修復。
新版本的代號是Carbon。Node.js 8將從2017年10月起,正式成為當前的LTS版本,并持續到2019年12月31日。這也意味著Node.js 6版本將在2018年4月進入到維護模式,并在2019年4月結束維護支持。
下載Node.js 8版本:https://nodejs.org/download/rc/v8.0.0-rc.2/
?
Async Hooks API介紹
Async Hooks (以前稱為AsyncWrap) API允許獲取有關句柄對象生命周期的結構跟蹤信息。
API發出的消息會將Node.js中所有句柄對象的生命周期告知給consumer。它試圖解決類似于continuation-local-storage npm package這樣的問題。
如果你正在使用continuation-local-storage,那么已經可以用稱為cls-hook的async hooks來代替使用了 – 只是目前并不是使用async hooks的最好時機,所以需要謹慎使用!
?
Async Hooks API 在 Node.js 8 中如何工作
createHooks函數的注冊功能會被每一個異步操作的不同生命周期事件調用。
const asyncHooks = require('async_hooks') asyncHooks.createHooks({ init,pre,post,destroy })了解更多Async Hooks,或查看正在進行的工作文檔。這些函數將會根據處理程序對象的生命周期事件選擇性觸發。
?
N-API介紹
N-API是用于構建原生插件的API。它獨立于底層JavaScript運行時,并作為Node.js自身的一部分進行維護。這么做的目的是保證應用程序二進制接口(ABI)在不同Node.js版本之間能夠保持穩定。
N-API的目的是將附加組件和基礎JavaScript引擎中的更改區分開,以便原生插件在不需要重新編譯情況下,就可以運行不同的Node.js版本。
了解更多N-API信息。
?
Node.js 8中的緩沖區安全性改進
在Node.js 8版本之前,使用new Buffer(Number)構造函數分配的緩沖區并未使用ZEROS初始化內存空間。結果導致新的Buffer實例可能包含敏感信息,容易導致安全問題。
雖然這是一個用于提高創建新Buffer性能的決定,但是對大多數人來說,并不打算這么使用。因此從Node.js 8開始,使用new Buffer(Number)或Buffer(Number)分配的Buffers會被ZEROS自動填充。
?
將V8升級到5.8:TurboFan&Ingnition
使用Node.js 8版本,底層的V8 JavaScript引擎也會更新。
對于Node.js用戶來說,最大的變化就是引入TurboFan和Ignition。Ignition是V8的解釋器,TurboFan是優化編譯器。
“Ignition和TurboFan的聯合使用已經開發了近3?年,它代表了V8團隊集體認識的最終結果,是V8團隊收集了JavaScript的實測性能并仔細分析了Full-codegen的缺點和Crankshaft的結果。這也是能夠在未來幾年內繼續優化JavaScript語言體系的基礎。“ - Daniel Clifford和V8團隊
目前V8的編譯管道如下圖所示。
這個管道的最大問題是,新的語言功能必須在管道的不同部分實現,這就增加了大量額外的開發工作。
下面是簡化的管道,沒有了FullCode Generator和Crankshaft:
?
新管道大大降低了V8團隊的技術負擔,并實現了很多之前無法實現的改進。
了解更多TurboFan and Ignition?和?TurboFan Inlining Heuristics?。
?
將npm升級到5.0.0
新的Node.js 8版本還附帶npm 5 - 最新版本的npm CLI。
新npm版本的亮點:
- 一種新的標準化的鎖定文件功能,用于跨包管理器的兼容性(package-lock.json),以及一種用于shrinkwrap的新格式和語義
- --save 已經不再需要了,因為所有的安裝將默認保存
- node-gyp現在支持Windows的node-gyp.cmd
- 新的發布版本將會包括sha512和sha1校驗
?
Node.js 8版本中的其它顯著改變
Buffer
Buffer方法現在接受Uint8Array作為輸入
Child Process
- Argument和Kill信號驗證得到改善
- Child Process方法接受Uint8Array作為輸入
Console
使用控制臺方法時,錯誤事件發送現在受到了抑制
Domains
Native Promise實例現在是域感知的
文件系統
- 實用程序類fs.SyncWriteStream已被棄用
- 已棄用的fs.read( )字符串接口已被刪除
HTTP
- 溢出的Cookie headers會被連接成一個字符串
- 該httpResponse.writeHeader( )方法已被棄用
Stream
Stream現在支持destroy( )和_destroy( ) API
TLS
該rejectUnauthorized選項現在默認為true
URL
WHATWG URL的實現,現在是Node.js API完全支持的
?
Node.js 8下一步要做什么
Node.js 8版本令我們興奮,因為它包含了很多有趣的提升,例如Async Hooks API,這些API在當前的文檔狀態是很難掌握的。我們將盡快開始使用新版本,并盡快提供給用戶新功能的更詳細說明。
在眾多支持node.js的產品中,值得一提的是Wijmo,這是一款為企業應用程序開發而推出的一系列包含 HTML5 和 JavaScript 的開發控件集。無論你的應用程序是移動端、PC端、還是必須要支持IE6,Wijmo Enterprise 均能滿足需求。
原文鏈接:https://blog.risingstack.com/important-features-fixes-node-js-version-8/
轉載請注明出自:葡萄城控件
轉載于:https://my.oschina.net/powertoolsteam/blog/913075
總結
以上是生活随笔為你收集整理的Node.js 8有哪些重要功能和修复?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 英特尔收购人工智能公司 Nervana,
- 下一篇: Android 的全盘加密容易破解