js 模块化

js 模块化的演变

模块可以认为是认为一个功能的封装。在代码中的体现就是一个函数、一个对象、一个文件等等。
它解决的问题是 js命名空间 。

  • 原始写法
function a(){
    // ...
}

function b(){
    // ...
}

缺点:涉及的全局变量很多,模块成员之间的关系不明确。

  • 对象写法

进一步的解决:把相近功能的模块成员放作为对象的属性或方法。

var m = {}

m.num = 1;
m.a = function(){
    this.a = 12;
    // ...
};
m.b = function(){
    this.a += 2;
    // ...
}

缺点:内部成员可被修改,不安全。

  • IIFE
var m = (function(){
    var num = 1;
    var a = function(){
        // ...
    }
    var b = function(){
        // ...
    }

    return {
        a:a,
        b:b
    }
})();

jquery和其他的函数库都采用的是IFFE 这样的写法。

  • 借用第三方的sea.js 或者 基于node的webpack ...
posted @ 2017-09-08 15:02  lake.hu  阅读(113)  评论(0编辑  收藏  举报