@Dale-Lin
2021-03-01T13:55:01.000000Z
字数 1035
阅读 1027
深入理解ES6 前端模块化
export 用于将一部分元素暴露给其他模块引用(只读):
export {name1, name2 as XX, ..., nameN};export let name1 = XX, name2 = ...., nameN; //also var, constexport function FuncName(){...};export name1;export class ClassName{...}export default name1;export default expression;export {name1 as default, ...};export * from "./xxxx.js"
as可以修改导出时的标识名;一个模块只能有一个default导出;*将整个模块作为命名空间进行导出;from可以从另一个模块导出自身导入的绑定。
import 用于导入另一个模块出的绑定:
import {name1 as XX, name2} from "./xxxx.js";import defaultExport from "./xxxx.js";import * as namespaceObj from "./xxxx.js"
as可以对导入的绑定重命名;不使用{}表示导入默认绑定;*将模块作为一个对象导入,可以用.点方法访问其元素。
export 和 import 通常在模块的顶部进行声明,因为它们必须在其他语句和函数之外使用。import 导入的是只读绑定,标识符只有在原模块中才能修改:
export var name = "Nicholas";export function setName(newName){ name = newName; }
import {name, setName} from "./example.js";console.log(name); //"Nicholas"setName("zhao4");console.log(name); //"zhao4"name = "111"; //throw an error!
在另一个模块中调用导入的函数,会回到该函数的原模块中执行,尝试修改导入的绑定会抛出错误。
/ 根目录./ 当前目录../ 上级目录