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",