学习笔记整理--JS模块化规范

    xiaoxiao2021-11-30  23

    模块化其实就是实现特定功能的一组方法

    一、原始写法

    function test1(){ // }; function test2(){ // }; 缺点:"污染"了全局变量,无法保证不与其他模块发生变量名冲突,而且模块成员之间看不出直接关系 二、对象写法(将test1()和test2()都封装在module1对象里) var module1=new Object({ _count:0; test1:function(){ // }, test2:function(){ // } }); //调用 module1.test1()缺点:暴露所有模块成员,内部状态可以被外部改写。比如外部代码可以直接改变内部计数器的值:module1._count=5

    三、立即执行函数写法(不暴露私有成员,外部代码无法读取内部的变量

    var module1=(function(){ var _count=0; var test1=function(){ // }; var test2=function(){ // }; return{ test1:test1, test2:test2 }; })();这种写法是JS模块的基本写法。在这个的基础上可以对他进行加工

    四、放大模式(模块很大可以分成几个部分)

    var module1 = (function (mod){     mod.test3= function () {       //...     };     return mod;   })(module1);五、宽放大模式(在浏览器环境中,模块的各个部分通常都是从网上获取的,有时无法知道哪个部分会先加载。如果采用上一节的写法,第一个执行的部分有可能加载一个不存在空对象,这时就要采用"宽放大模式"。var module1 = ( function (mod){     //...     return mod;   })(window.module1 || {});

    六、输入全局变量(独立性是模块的重要特点,模块内部最好不与程序的其他部分直接交互。

    为了在模块内部调用全局变量,必须显式地将其他变量输入模块

    var module1 = (function ($, YAHOO) {     //   })(jQuery, YAHOO);上面的module1模块需要使用jQuery库和YUI库,就把这两个库(其实是两个模块)当作参数输入module1。这样做除了保证模块的独立性,还使得模块之间的依赖关系变得明显(目前不懂)

    转载请注明原文地址: https://ju.6miu.com/read-679034.html

    最新回复(0)