標籤:

如何評價 Node.js 8.0 ?

Node.js 8.0 於2017年5月30日發布,新特性包括

  1. 內置 npm 5.0
  2. 集成 V8 5.8
  3. 試驗性的 Node.js API
  4. async_hooks 模塊
  5. WHATWG 標準的 URL parser
  6. Buffer API 改動
  7. util.promisify()
  8. ...

https://nodejs.org/en/blog/release/v8.0.0/


端午節結束了。雖然接下來的四個月都沒有節假日,但筆者一點都不煩惱。因為 Node.js 8 在端午後第一個工作日就正式發布,這足以讓我與 Node.js 的激情燃燒一個夏天!本文挑選了筆者認為 Node.js 8 最令人興奮的四大新功能,與大家分享:端午節後福利:Node.js 8 - 知乎專欄

  1. async/await 與 util.promisify
  2. Async Hooks
  3. Node.js API (N-API)
  4. 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 |