前端模块化
1.什么是模块化
复杂程序按规范封装组合,内部变量和函数私有,向外保留变量和函数供其他模块调用
2.模块化发展历史
-
全局function:封装函数
-
命名空间:封装对象,缺点是完全暴露,对象变量可在外部修改
-
IIFE 闭包/匿名自执行
//window对象添加全局属性/命名空间 //增强版:参数传入依赖 (function(win, $b){ function aFn(){} win.MyFun = {aFn} })(window,JQuery)
3.模块化好处
- 避免命名冲突/命名空间污染
- 分离,按需加载
- 复用,维护
4.引入多个script问题
- 请求多
- 依赖混乱
- 维护难
5.CommonJS
实现:Browserify
- module
- exports
- require
- global
6.AMD
- CommonJS同步加载不满足浏览器体验,AMD 异步模块加载出现了
require(['math'], function (math){
math.add(2,3);//与模块加载异步,浏览器不会假死
})
- 实现:require.js