? ? ? ?
原文传送门:https://mp.weixin.qq.com/s/bIU_FvesizFJ3D_6KWRPHA
后记:如果纯nodejs直接使用.mjs比较舒服
如果你是纯nodejs,建议使用.mjs更方便。
1、将.js文件改为.mjs文件,不仅仅是入口文件,是所有js文件都改。
2、启动的时候加入 --experimental-modules 。如
$ node --experimental-modules index.mjs
原理依然是使用babel来编译Nodejs。借助babel-node执行包含ES模块代码的文件。
一、安装依赖 babel-cli babel-preset-env
$ npm init -y && cnpm install babel-cli babel-preset-env -S
其中 babel-node 为 babel-cli 自带。
添加 .babelrc
{ "presets": ["env"] }
二、新建几个测试用例
1、app.js
import { sayHi, sayBey } from './lib'
import Person from './Person'
sayHi()
sayBey()
const p = new Person('Lee', 18)
console.log(p.toString())
2、lib.js,用于测试多个export
export const sayHi = () => {
console.log('hi...')
}
export const sayBey = () => {
console.log('Bey...')
}
3、Person.js,用于测试export default ...
class Person { constructor (name, age) { // super(); // 建议内置的变量加个_区分,而要访问的变量用get关键词来识别返回 this._name = name; this._age = age; } get name() { return this.name } set name(value) { this._name = value } get age() { return this._age } set age(value) { this._age = value } static version () { return 'v0.1.0'; } toString () { return `name: ${this._name},age:${this._age}` } } export default Person
通过 ./node_modules/.bin/babel-node app.js 或 npx babel-node app.js (推荐)执行脚本。其中 babel-node 为 babel-cli 自带。