[关闭]
@Dale-Lin 2021-03-01T21:55:01.000000Z 字数 1035 阅读 673

ES6 模块

深入理解ES6 前端模块化


模块特性

export

export 用于将一部分元素暴露给其他模块引用(只读):

  1. export {name1, name2 as XX, ..., nameN};
  2. export let name1 = XX, name2 = ...., nameN; //also var, const
  3. export function FuncName(){...};
  4. export name1;
  5. export class ClassName{...}
  6. export default name1;
  7. export default expression;
  8. export {name1 as default, ...};
  9. export * from "./xxxx.js"

as 可以修改导出时的标识名;一个模块只能有一个 default 导出; * 将整个模块作为命名空间进行导出; from 可以从另一个模块导出自身导入的绑定。

import

import 用于导入另一个模块出的绑定:

  1. import {name1 as XX, name2} from "./xxxx.js";
  2. import defaultExport from "./xxxx.js";
  3. import * as namespaceObj from "./xxxx.js"

as 可以对导入的绑定重命名;不使用 {} 表示导入默认绑定; * 将模块作为一个对象导入,可以用 . 点方法访问其元素。

注意事项

  1. exportimport 通常在模块的顶部进行声明,因为它们必须在其他语句和函数之外使用。
  2. import 导入的是只读绑定,标识符只有在原模块中才能修改:
  1. export var name = "Nicholas";
  2. export function setName(newName){ name = newName; }
  1. import {name, setName} from "./example.js";
  2. console.log(name); //"Nicholas"
  3. setName("zhao4");
  4. console.log(name); //"zhao4"
  5. name = "111"; //throw an error!

在另一个模块中调用导入的函数,会回到该函数的原模块中执行,尝试修改导入的绑定会抛出错误。

模块路径

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注