Node中运行ES6模块

  1. 将所有JS文件后缀改为.mjs

  2. 在package.json(没有就新建)中声明typemodule

    1
    2
    3
    4
    // package.json
    {
    "type": "module"
    }

暴露

分别暴露

在想要暴露的数据前加上export关键字

1
2
3
4
export const name = "666"
export function sayhi(){
console.log("hi")
}

统一暴露

在代码的最后加上类似对象结构的语句expost {},不能写成name: name

1
2
3
4
5
const name = "666"
function sayhi(){
console.log("hi")
}
export {name, sayhi}

默认导出

在代码最后使用export default关键字后接对象作为默认导出

引入

当js文件使用了ES6模块,浏览器引入时就需要修改typemodule

1
<script type="module" src="./index.js"></script>

全部引入

* as后接命名,适用于所有方法的暴露

1
import * as abc from './app.js'

命名引入

当使用分别暴露与统一暴露时才可使用命名引入

1
import {name} from './app.js'

若想为name重新命名可添加as

1
import {name as name1} from './app.js'

默认引入

只有使用默认暴露时才可使用

1
import abc from './app.js'

abc即为默认导出的对象

import可以不接受任何数据,表示执行该模块代码

注意

引入的数据与暴露的数据公用一块内存空间,因此暴露的数据一般设为const