20200423
Plan
- 你不知道的 js -- 代码组织
Notes
生成器 -- Transpile
思路:
用 swich 语句来分隔不同的步骤,并内部标记当前的 step
生成器的使用
- 产生一系列值
- 顺序执行任务队列
模块
😵
- UMD
- CMD
- AMD
- CommonJS
- esm
ES6 模块
- 新关键字
import xxx from "xxx";
export var test = "test";
var m1 = "module";
export { m1 };
// 或者
export { m1, test };
// 重命名
export { m1 as m2 };
// 以上都为命名导出 -- 名称绑定
模块的导入不是值的复制,而是指向这个模块的一个指针/引用
默认导出
export default xxx; // 一个模块只能有一个默认导出
export { xxx as default };
注意 这两种形式存在差异
export default xxx;
导出的是一个表达式。表达式是立即求值的,所以之后再修改这个导出的值,模块导入还是得到原来的值
export { xxx as default };
导出的是一个标识符,之后再修改 xxx,导入模块得到的是修改后的 xxx。
下面这个例子更加简单明了一些:
export default 1;
// export {1 as default} // 语法错误 -- 因为1不是标识符
提供了另一个一个简单的例子作为参考。
More
- 这周看一下 babel 转义 async/await 后的代码。
- 为什么
export default xxx是表达式,而export {xxx as default}是标识符。