node中使用ES6语法,很简单,网上的文章写的太复杂,我根据网上的经验折腾了一下午,最后终结了下,几乎装个babel就能用的。
下面是个人使用过程,分享如何使用及遇到的问题。html
首先的有node
环境,这个不介绍,当前个人版本是8.11.4
1.初始化node
npm init -y
2.安装babel
安装官网上介绍的操做就行,https://www.babeljs.cn/es6
npm install --save-dev babel-cli babel-preset-env
建立 .babelrc
文件npm
{ "presets": ["env"] }
这时候已经配置完了,能够执行ES6语法了,可是import
和export
仍是不支持的。json
es6
的支持状况安装es-checker
来帮助咱们查看对es6的支持状况。babel
npm install --save-dev es-checker
借助npx
工具来运行es-checker
工具
npx
的介绍能够看这篇文章:
http://www.ruanyifeng.com/blo...
npx es-checker
结果以下:测试
ECMAScript 6 Feature Detection (v1.4.1) Variables √ let and const √ TDZ error for too-early access of let or const declarations √ Redefinition of const declarations not allowed √ destructuring assignments/declarations for arrays and objects √ ... operator ...省略内容 Module × Module export command × Module import command ========================================= Passes 39 feature Detections Your runtime supports 92% of ECMAScript 6 =========================================
能够看到仍是有一些不支持的。
.babelrcfetch
{ "presets": ["env"] }
上面的配置其实就好了;可是我在看babel的文档时说设置node环境须要设置targets,因而个人配置以下,可是我试了上面的配置也是能够的,下面的仅供参考。
{ "presets": [ [ "env", { "targets": { "node": "current" } } ] ] }
package.jsonui
{ "name": "node", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC", "devDependencies": { "babel-cli": "^6.26.0", "babel-preset-env": "^1.7.0", "es-checker": "^1.4.1" } }
Stack.js
const Stack = (function() { const items = new WeakMap(); class Stack { constructor() { items.set(this, []); } push(value) { let stack = items.get(this); stack.push(value); } pop() { let stack = items.get(this); return stack.pop(); } isEmpty() { let stack = items.get(this); return stack.length === 0; } size() { let stack = items.get(this); return stack.length; } print() { let stack = items.get(this); console.log(stack.toString()); } } return Stack; })(); module.exports.Stack = Stack;
index.js
const { Stack } = require("./Stack.js"); //import { Stack } from "./Stack"; let stack = new Stack(); stack.push("aaa"); stack.print();
在控制台中执行
node index.js
输出
aaa
其实node
版本9以上就已经支持了,可是须要把文件名改为*.mjs
,而且加上--experimental-modules
选项。
介绍一个node升级的好工具,名字就叫n
,具体能够去npm上查看。
npm install -g n
执行以下命令进行升级
n stable 或 n 10.15.3
结果
install : node-v11.12.0 mkdir : /usr/local/n/versions/node/11.12.0 fetch : https://nodejs.org/dist/v11.12.0/node-v11.12.0-darwin-x64.tar.gz ######################################################################## 100.0% installed : v11.12.0
升级成功后,①把文件都改为*.mjs
,②并把代码改为import
和export
的方式,执行
node --experimental-modules arithmetic/index.mjs
上面两步都不能少。否则就执行不成功。