前端中的模块化与闭包

一、一般开发中可能存在命名冲突

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 的模块化将是未来的发展趋势。

posted @ 2018-01-02 09:25  邹文强  阅读(147)  评论(0)    收藏  举报