如何評價 Node.js 8.0 ?
Node.js 8.0 於2017年5月30日發布,新特性包括
- 內置 npm 5.0
- 集成 V8 5.8
- 試驗性的 Node.js API
- async_hooks 模塊
- WHATWG 標準的 URL parser
- Buffer API 改動
- util.promisify()
- ...
https://nodejs.org/en/blog/release/v8.0.0/
端午節結束了。雖然接下來的四個月都沒有節假日,但筆者一點都不煩惱。因為 Node.js 8 在端午後第一個工作日就正式發布,這足以讓我與 Node.js 的激情燃燒一個夏天!本文挑選了筆者認為 Node.js 8 最令人興奮的四大新功能,與大家分享:端午節後福利:Node.js 8 - 知乎專欄
- async/await 與 util.promisify
- Async Hooks
- Node.js API (N-API)
- TurboFan 與 Ignition (TF+I)
ps: 如果使用nvm進行node v8.0.0的安裝,記得重新安裝一下npm到5.0.1 : )
暫時列一些,拋磚引玉,歡迎修正。
個人之前已經在用7.9了,看到下面的一堆利好,沒理由不上新LTS。(=,-,生命在於折騰
如果覺得npm變化大的童鞋,用nvm繼續單獨使用v4也沒啥問題,或者使用node v8.0+cnpm也是一個選擇,不過首先,你需要升級,並試一下npm i(捂臉逃
- NPM v5
- 支持scope registery
- 自己搭建的npm hub的包可以愉快的用起來了,之前如果在有私有mirror和cnpm私有倉庫的童鞋應該沒啥感知。
- lockfile標準化,以及安裝依賴後自動更新,接下來應該會鼓勵大家把依賴都顯式說清楚,尤其是交付的時候。(npm pub)說句題外話,之前遇到依賴包都是^,*的,依賴包更新就break changes的情況,也是沒脾氣。
- link deps效率提升,和錯誤修正
- 據說速度更快了,我比較關心之前做preinstall/postinstall的特殊包會不會出狀況。其實現在使用cnpm/tnpm我就很滿足了。
- 據說改正安裝和更新包的時候的軟鏈的問題,之前各別項目安裝的時候,遇到必須切老版本npm或者必須rm掉node_modules重新npm i的問題,也是醉= =
- npm script添加的prepack/postpack對做發布前後做收尾工作會有幫助,部分之前得寫在shell里的事情,可以用js來寫,並管理在npm scripts里了。
- 規範化包名稱,不會出現大小寫混合的包名稱了(遇到osx/linux對大小寫敏感的fs,如果不使用容器,項目因為名稱大小寫直接跑不起來,要多蛋疼有多蛋疼)從cache安裝的時候,不會自作聰明的去registery請求數據了,開發或者構建發布的時候,明顯能感知到的「性能」提升,(笑
- cache的重新實現帶來的效率提升,呃,只能說因為歷史原因,大家忍耐頗多,用了各種各樣的方式來提高安裝速度。 cnpm via @死馬 對於國內環境簡直功不可沒,當然,還有各種把node_modules入倉庫,存留線上機器(增量),打入docker image(這個其實我認同)的trick方法。
- 發布包後會自帶hash(sha512和sha1),隨著各路cdn的大躍進,文件分發時帶integrity value是個趨勢,可以避免或者說幫助定位一個很low的問題,版本一致,文件內容不一致...
- node engine版本升級,性能提升。(只要能更快,就是吼的,如果沒有副作用,就更吼了(不造有沒有解決webpack2+hmr操作array總crash的問題...)
- async_hooks 目測用來做性能tracing會很贊。不知道是否可行。 @朴靈 朴大師
- 隨著 n-api 的出現,未來是否會出現一堆為了挑戰性能極限,把業務代碼進行native編譯的情況呢,或者會不會出現閉源收費的組件或者服務sdk呢,如果會出現,起碼交付會變的簡單一些。
- 開源的promisify被納入正宮,廢棄了一坨fs api,接下來寫工具可以舒服一些了,與此同時,錯誤控制相關有不少優化(待細看)。
- 錯誤輸出可以順手觸發錯誤事件,對於log lib採集問題,是好的發展,現在正常的監聽錯誤事件就好了,不必做console.*的wrap或者用自己的輪子來代替console.*了,減少了各種亂七八糟的bind。
- 引入標準URL Parser可否解決各種url parser混戰的情況呢,我覺得可以,至少能讓諸方朝著標準化靠近,可以砍掉一部分輪子實現。
回去詳細看一下再說... 順便召喚 貘大 @貘吃饃香 和 @徐飛 叔
------
可能用到了假的node v8.0,用新版本和舊版本簡單跑了一下之前的腳本,發現好像耗時更長了,或許應該等8.0.1出來?....Orz
轉換了1w篇post,發現...(說好的提升呢,一定是我使用的方式不對....
7.9.0 37.10s user 2.78s system 108% cpu 36.892 total
8.0.0 41.15s user 2.88s system 109% cpu 40.256 total
1k+ posts
7.9.0 4.49s user 0.39s system 113% cpu 4.278 total
8.0.0 4.69s user 0.38s system 121% cpu 4.189 total
謝邀。
非常高興的更新。特別是 async_hooks 部分,我好好研究一番後再來補充。
終於可以不用自己寫 promisify 了。
對node 8.0.0的更新無感,這把npm5搶鏡了
不安全的HTTP連接,npm不會將依賴下載下來(噗,就例如我們學校那個破網。
推薦閱讀:
※php 和nodejs 的各自優勢有哪些,如果無基礎開始,要學那個好?
※node.js與php相比有哪些優缺點?未來會替代php成為最好的語言嗎?
※Nodejs中 Callback 的執行是否造成阻塞?
※參加第11屆D2前端技術論壇,你有什麼收穫?
TAG:Nodejs |