Node.js 8有哪些重要功能和修復?
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,那麼已經可以用稱為的async hooks來代替使用了 – 只是目前並不是使用async hooks的最好時機,所以需要謹慎使用!
Async Hooks API 在 Node.js 8 中如何工作
createHooks函式的註冊功能會被每一個非同步操作的不同生命週期事件呼叫。
const asyncHooks = require('async_hooks') asyncHooks.createHooks({ init, pre, post, destroy })
瞭解更多,或檢視正在進行的。這些函式將會根據處理程式物件的生命週期事件選擇性觸發。
N-API介紹
N-API是用於構建原生外掛的API。它獨立於底層JavaScript執行時,並作為Node.js自身的一部分進行維護。這麼做的目的是保證應用程式二進位制介面(ABI)在不同Node.js版本之間能夠保持穩定。
N-API的目的是將附加元件和基礎JavaScript引擎中的更改區分開,以便原生外掛在不需要重新編譯情況下,就可以執行不同的Node.js版本。
瞭解更多資訊。
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 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的產品中,值得一提的是,這是一款為企業應用程式開發而推出的一系列包含 HTML5 和 JavaScript 的開發控制元件集。無論你的應用程式是移動端、PC端、還是必須要支援IE6,Wijmo Enterprise 均能滿足需求。
原文連結:https://blog.risingstack.com/important-features-fixes-node-js-version-8/
轉載請註明出自:葡萄城控制元件
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28298702/viewspace-2140201/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JDK 18修復了三個重要功能 - mallocJDK
- Node.js 21中有哪些最新功能?Node.js
- 磁頭損壞的修復方法有哪些
- miui 8有哪些使用功能嗎 MIUI 8實用功能使用教程UI
- Linux中master是什麼意思?有哪些重要的功能?LinuxAST
- RobotGo v0.46.0 釋出, 修復重要 bugOTGGo
- 點晴OA系統有哪些功能和優勢?
- BI平臺有哪些功能
- 資料治理的重要性有哪些
- laravel admin 手動修復 selectable 沒有全選/全否功能Laravel
- Android熱修復原理(一)熱修復框架對比和程式碼修復Android框架
- windows10更新提示缺少重要的安全和質量修復解決方法Windows
- godaddy主機好嗎?有哪些功能和優勢?Go
- 閘道器和路由器功能的有哪些不同路由器
- 電商專案一般有多少個介面,有哪些功能和作用?
- Scrapy有什麼功能?架構有哪些?架構
- DSP晶片效能引數有哪些重要指標?晶片指標
- sqlServer修復有問題的表SQLServer
- 物聯網路卡有哪些功能
- Zoho CRM系統有哪些功能?
- 盲盒APP功能模組有哪些?APP
- JDK 7u9和6u37釋出,修復重要安全漏洞JDK
- 社群6月月報 | Apache DolphinScheduler重要修復和最佳化記錄Apache
- 沒有修復不了漏洞,只有修不成的工具人!
- MIUI 8和MIUI 7有哪些區別? MIUI 8系統怎麼樣?UI
- win10沒有wifi圖示怎麼辦_win10沒有wifi功能修復方法Win10WiFi
- Ubuntu釋出PHP重要補丁修復多個PHP漏洞UbuntuPHP
- redhat8 rhel8 啟動grub損壞修復Redhat
- Linux常用目錄有哪些?這些最重要!Linux
- CRM系統的功能模組有哪些
- 盲盒小程式有哪些特色功能
- 熱修復和外掛化
- Oracle OCR和VOTEDISK故障修復Oracle
- 開機f8修復電腦步驟 win10開機按f8怎麼修復系統Win10
- go-carbon 1.4.5版本釋出,修復已知bug和優化功能Go優化
- Wine 開發版 8.16 釋出,帶來新功能和多項修復
- Python有哪些比較重要的內建函式?Python函式
- Windows 10丟掉了哪些糟糕的Windows 8功能?Windows