Node ES6 支援並使用 Babel 建立專案
整個 ES6 規範尚未完整實現,因此你只能使用某些新功能。你可以在 http://node.green/上檢視當前支援的 ES6 功能列表
自 NodeJS v6 以來,一直有很好的支援。因此,如果你使用 NodeJS v6 或更高版本,你可以享受使用 ES6。但是,你可能還想使用一些未釋出的功能,以及其他一些功能。為此,你需要使用一個轉換器
可以在執行時執行轉換器並構建,以使用所有 ES6 功能等。最受歡迎的 JavaScript 轉發器稱為 Babel
Babel 允許你使用 ES6 規範中的所有功能以及“stage-0”的一些其他非規範功能,例如 import thing from 'thing
而不是 var thing = require('thing')
如果我們想建立一個專案,我們使用’stage-0’等功能,例如 import,我們需要新增 Babel 作為轉換器。你將看到使用 react 和 Vue 以及其他基於 commonJS 的模式的專案經常實現階段 0。
建立一個新的節點專案
mkdir my-es6-app
cd my-es6-app
npm init
安裝 babel ES6 預設和 stage-0
npm install --save-dev babel-preset-es2015 babel-preset-stage-2 babel-cli babel-register
建立一個名為 server.js
的新檔案並新增一個基本的 HTTP 伺服器。
import http from 'http'
http.createServer((req, res) => {
res.writeHead(200, {'Content-Type': 'text/plain'})
res.end('Hello World\n')
}).listen(3000, '127.0.0.1')
console.log('Server running at http://127.0.0.1:3000/')
請注意,我們使用 import http from 'http'
這是一個階段 0 功能,如果它工作,它意味著我們已經使轉換器正常工作。
如果你執行 node server.js
,它將無法知道如何處理匯入。
在目錄的根目錄中建立 .babelrc 檔案並新增以下設定
{
"presets": ["es2015", "stage-2"],
"plugins": []
}
你現在可以使用 node src/index.js --exec babel-node
執行伺服器
在生產應用程式上執行執行時轉換器並不是一個好主意。但是,我們可以在 package.json 中實現一些指令碼,以便更輕鬆地使用它們。
"scripts": {
"start": "node dist/index.js",
"dev": "babel-node src/index.js",
"build": "babel src -d dist",
"postinstall": "npm run build"
},
以上將在 npm install
上構建已轉換的程式碼到 dist 目錄,允許 npm start
使用轉換後的程式碼為我們的生產應用程式。
npm run dev
將啟動伺服器和 babel 執行時,這在當地處理專案時很好並且首選。
再進一步,你可以安裝 nodemon npm install nodemon --save-dev
來監視更改,然後重新啟動節點應用程式。
這真的加快了與 babel 和 NodeJS 的合作。在你的 package.json 中,只需更新 dev
指令碼即可使用 nodemon
"dev": "nodemon src/index.js --exec babel-node",