- 基于立即执行函数(又叫IIFE或者匿名函数自调用)
模块化规范
commonJs
- 专门用于客户端,模块的加载是同步执行
- 依赖模块需要编译打包处理
- model.exports和exports的区别
- model.exports 只能暴露一次,后面继续写会覆盖上面的
- exports可以暴露多次
AMD
- 专门用于浏览器,模块的加载是异步执行
CMD
- 专门用于浏览器,模块的加载是异步执行
- 模块使用时才会加载
ES6
- 依赖模块需要编译打包处理
- bable将ex6转成es5
- browserify可以使用类似于node的require()的方式来组织浏览器端的JavaScript代码,通过预编译可以让前端的JavaScript直接使用npm安装一些库(打包编译)
- 专门用于浏览器
- 常规暴露export
- 统一暴露
- export {f1,f2}
- 分别暴露
- export function f1(){}; export function f2(){}; export let arr = [1,2,3];
- 引入时必须用对象解构赋值
- import { } from ’ ';
- 统一暴露
- 默认暴露export default
- 引入时可以是任意类型
- import f from ’ ';
- 暴露任意类型,暴露什么数据接收到的就是什么数据
- export default { msg: ‘111’, function f(){}, [1,2,3]}
- 引入时可以是任意类型