花了 3 天篇幅大致說完了 Node.js 外圍的事情,也該說說 Node.js 的內在。
看書第一件事情我習慣先看書背、目錄,Node.js 文件目錄分為四項,分別是
這篇會以 ES6 的說明 為主軸做記錄
Node.js 對 ES6、ES 2017 等新語法的支援程度可以藉由 node.green 得知,而表格中可以發現在經過 io.js 的洗禮後的 Node.js 對 ES6 的支援度從 v0.12 的 31% 上升至 v4 的 57%,到了現在最新的 LTS 版的 v6 更達到 99% !
Node.js 會在每一個的更新適度的加入 JavaScript 的新語法,好讓未來的版本能跟上新語法的步調。然而為了 Node.js 的穩定性著想,並非每一個新支援的語法都會當做預設值可以使用,Node.js 將其分為三種階段
狀態 | 說明 |
---|---|
Shipping | 測試通過並預設運作,let 、const 等需要宣告模式 "use strict" |
Staged | Chrome V8 團隊測試仍不穩定,使用需要加 --harmony ,如:node --harmony app.js |
In progress | V8 團隊尚未沒有測試過且官方不健議使用,但仍可各別透過 --harmony ,使用方式再麻煩知道的朋友告訴我 |
要怎麼 node.green 的資訊呢?可以看下表
顏色 | 說明 |
---|---|
Node 預設即可使用 | |
執行是加 --harmony 才能使用 |
|
這個 Node.js 的版本不支援或還沒測試過 |
有的!目前顯為人知就屬 Babel ,早期 Browser 還沒支持 ES6 等新語法,此時透過 Babel 既可輕鬆寫新語法又可以兼顧不支援新語法的 Browser。( 突然覺得開發 Back-end 是一種幸福,但我更喜歡前後跑 XD )
想知道主流的 Browser 對 ES6 的支援度和有哪些第三方方案解決 ES6 轉 ES5 等相關資訊,可以到 ECMAScript 6 compatibility table 查看,裡面有羅列的相當清楚,若你也願意一同維護這個資訊,歡迎 Fork 回去!
計畫中有打算介紹怎麼在 backend 靠 babel 寫 ES6 嗎?
為了 ES6 在 Node.js 上使用 Babel ,不會這麼做!因為 Node.js 在 v6 和 v7 的版本對 ES6 的支援度已達 99% ,因此載入 Babel 使用,我認為沒有意義。
目前使用 Babel ,
async / await
結論:
實作會以 ES6 方式撰寫為主,內容還在規劃,而 Babel 若有使用一定是其他的目的 XD
我遇到的狀況是:
有台機器只有 node v0.10 ,但我的程式是用 ES6 + koa 寫的,所以我希望能靠 babel 幫我轉譯出該機器能用的 js ... XD
3 分鐘內想到的解決方案,
感謝回應 QQ