前端中的模块化与闭包
一、一般开发中可能存在命名冲突
1.、在团队协作中,多个js文件 中 函数名相同,这样就导致了冲突,直接把函数暴露在全局中也是存在隐患的
2、函数之间的依赖关系很难维护
二、最初的解决方案是添加命名空间
<script>
// a.js
// 变量
var variable={};//全局中只有唯一的一个variable,用来保存所有的变量
variable.varity=1;
// 方法
var methods={};//全局中只有唯一的一个methods,用来保存所有的方法
var methods.common={};
methods.common.changeHTML=function(){
//define function changeHTML
alert(1);
}
methods.common.decodeHTML = function () {
//define function decodeHTML
}
</script>
1、这样写代码风格不简洁
2.、 没有解决读写的控制
三、进一步方案 - 闭包
四、模块化
解决命名冲突与函数依赖, 松散耦合
服务器端: CommonJS 服务器端加载文件是通过缓存读取本地文件的形式
浏览器端: AMD CMD 每个文件都要通过 HTTP 请求
服务器端:采用按需加载
浏览器端: RequireJS 提出预先加载并执行, SeaJS 提出预先加载, 按需执行
更倾向于RequireJS: SeaJS 已经停止维护, RequireJS 社区完善
ES6 的模块化将是未来的发展趋势。

浙公网安备 33010602011771号