ES模块化
参考: 1.模块化 – 李立超 | lilichao.com
默认情况下,node中的模块化标准是
CommonJS
,要想使用ES的模块化,可以采用下面两种方案
使用
mjs
作为扩展名修改
package.json
,把模块化规范设置为ES模块当我们设置
"type:"module"
,当前项目下所有的``js文件都默认为
es module`导入es模块,不能省略扩展名mjs
案例:
文件目录
先用
mjs
module1.mjs
export let a = 10; export let b = 20; export const c = { name: "meowrain" }
module.js
import {a,b,c} from "./module1.mjs" console.log(a) console.log(b) console.log(c)
导出
// 导出变量(命名导出)
export let name1, name2, …, nameN;
export let name1 = …, name2 = …, …, nameN;
// 导出函数(命名导出)
export function functionName(){...}
// 导出类(命名导出)
export class ClassName {...}
// 导出一组
export { name1, name2, …, nameN };
// 重命名导出
export { variable1 as name1, variable2 as name2, …, nameN };
// 解构赋值后导出
export const { name1, name2: bar } = o;
// 默认导出
export default expression;
export default function (…) { … } // also class, function*
export default function name1(…) { … } // also class, function*
export { name1 as default, … };
// 聚合模块
export * from …; // 将其他模块中的全部内容导出(除了default)
export * as name1 from …; // ECMAScript® 2O20 将其他模块中的全部内容以指定别名导出
export { name1, name2, …, nameN } from …; // 将其他模块中的指定内容导出
export { import1 as name1, import2 as name2, …, nameN } from …; // 将其他模块中的指定内容重命名导出
export { default, … } from …;
默认导出可以随便起名,比如
export default function sum(a,b){ return a+b; }
我们在导入的时候就可以随便命名
import xxx from 'xxx.js' 就不需要写花括号了
引入
// 引入默认导出
import defaultExport from "module-name";
// 将所有模块导入到指定命名空间中
import * as name from "module-name";
// 引入模块中的指定内容
import { export1 } from "module-name";
import { export1 , export2 } from "module-name";
// 以指定别名引入模块中的指定内容
import { export1 as alias1 } from "module-name";
import { export1 , export2 as alias2 , [...] } from "module-name";
// 引入默认和其他内容
import defaultExport, { export1 [ , [...] ] } from "module-name";
import defaultExport, * as name from "module-name";
// 引入模块
import "module-name";