Module

模块

一个一个的局部作用域的代码块

模块系统解决的问题

  • 模块化的问题
  • 消除全局变量
  • 管理加载顺序

export default和对应的import

  • 导出的东西可以被导入(import),并访问到
  • 一个模块没有导出,也可以将其导入
  • 被导入的代码都会执行一遍,也仅会执行一遍
  • 导入时可以随便起名
  • 一个模块只能有一个 export default
    A.js 导出模块
const age = 18;
// const sex = 'male';
// console.log(age);

// export default age;
// export default 20;
// export default {};

// const fn = () => {};
// export default fn;
// export default function () {}

export default class {}

B.js引入模块

//可以随便起名
import age from './module.js';
console.log(age);

export 和对应的import

  • 在使用import导入时,不能随意命名,要和导出的名字保持一致
  • 使用export 导出时,必须是声明或者语句,不能使一个值,例如:
    错误写法:const age = 18; export age;
    正确写法: export const age = 18;或者 export { age };
  • as 导出导入时起别名
//导出时起别名
function fn() {}
export { fn as func};
// 导入时起别名
import { func as f1} from './module.js';
  • * 整体导入
import *  from './module.js';
// 也可以起别名
import * as obj from './module.js';
  • export和export default 同时导入 :一定是 export default 的在前
 // 正确写法
import age2, { func, age, className } from './module.js';
// 错误写法
import { func, age, className },age2 from './module.js'; 

Module 的注意事项

  • 模块顶层的this指向undefined
  • import 命令具有提升效果,会提升到整个模块的头部,率先执行
  • import 执行的时候,代码还没执行
  • import 和 export 命令只能在模块的顶层,不能在代码块中执行
  • import() 可以按条件导入
  • 导入导出的复合写法 export { age } from './module.js';
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。