让Node.js支持ES6的语法
使用命令,全局安装es-checker
:
cnpm install -g es-checker
安装好之后,执行以下命令来查看Node.js对ES6的支持情况。
es-checker
可以从输出中查看当前版本的Node.js对ES6的支持情况。
ECMAScript 6 Feature Detection (v1.4.1) ========================================= Passes 38 feature Detections Your runtime supports 90% of ECMAScript 6 =========================================
添加ES6支持
首先,使用cnpm init
初始化cnpm工作目录,生成package.json
文件。
cnpm init -y
接下来,需要安装Babel-cli。全局安装和本地安装都可以。
// 全局安装
cnpm install babel-cli -g
// 本地安装
cnpm install babel-cli --save
然后,安装babel-preset-es2015来支持ES6的语法。
cnpm install babel-preset-es2015 --save
安装完之后,还需要添加一个名为.babelrc
的配置文件。方便babel-cli
使用babel-preset-es2015
。文件内容如下:
{ "presets": [ "es2015" ], "plugins": [] }
测试ES6
使用es-checker
测试Node.js的时候,发现Node.js不支持import
语法。我们可以测试import
来验证babel的支持程度。
创建一个index.js文件,内容如下:
直接使用Node.js执行index.js:
node index.js
执行结果会报错:
(function (exports, require, module, __filename, __dirname) { import { createServer } from 'http';
^
SyntaxError: Unexpected token {
at new Script (vm.js:79:7)
at createScript (vm.js:251:10)
at Object.runInThisContext (vm.js:303:10)
at Module._compile (internal/modules/cjs/loader.js:657:28)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
at Module.load (internal/modules/cjs/loader.js:599:32)
at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
at Function.Module._load (internal/modules/cjs/loader.js:530:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:742:12)
at startup (internal/bootstrap/node.js:282:19)
Node.js不支持import
语法。接下来,使用babel来执行index.js。
全局安装的检测比较简单:
babel-node index.js
结果打印出a
:
http://localhost:8088
GET:/
GET:/favicon.ico
浏览器输入:http://127.0.0.1:8060/ 显示如下就成功了!
本地安装的话,可以使用cnpm script
来执行命令。在package.json
文件的scripts添加命令"babel": "babel-node index.js"
,然后执行:
cnpm run babel
可以看到控制台有打印出结果。
http://localhost:8088 GET:/ GET:/favicon.ico
浏览器输入:http://127.0.0.1:8060/ 显示如下就成功了!