• Javascript模块化编程-初识[1]


    JS模块化编程,已经成为一个迫切的需求。理想情况下,开发者只需要实现核心业务逻辑,其他都可以加载别人已经写好的模块。

    但是,JS不是一种模块化编程语言,它不支持类,所以没有严格意义上的模块。为了实现模块化,类模块化应运而生。

    1、原始写法:

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

         只需要把不同的函数简单的放在一起,就是一个模块。

         Eg:

             function t1(){

                 //...   

             }

             function t2(){

               //...

             }

         缺点:污染全局变量,无法保证不与其他模块发生变量名冲突,而且模块成员之间看不出直接关系。

    2、对象写法:

         为了解决原始写法的缺陷,可以把模块写成一个对象,所有模块成员都放在对象里面。

         Eg:

             var module1=new Object({

                  num:0,

                  Fn1:function(){

                     //...    

                  },

                  Fn2:function(){

                     //...    

                  }

              });

         缺陷:全局变量可以随意被改写。

    3、立即执行函数写法

         立即执行函数,可以达到不暴露私有成员的目的。

         Eg:

             var class1=(function(){

                              var num=0;

                              var fn1=function(){

                                             //...

                                          };

                              var fn2=function(){

                                             //...

                                          };

                              return {

                                  m1:fn1,

                                  m2:fn2,

                               };

                             })();

         这种写法就是JS模块化的常规写法。

    4、放大模式

         如果一个模块很大,需要分成多个部分,就必须采用放大模式。

         Eg:

             var class2=(function(c1){

                              c1.fn3=function(){

                                         //...

                                         }

                             })(class1);

    5、实现调用外部全局变量,Jquery etc.

         独立性是模块化的一个重要特点,模块内部最好不要和其它外部成员直接交互。

         为了实现模块化调用外部全局成员,必须显示地将其它变量输入模块。

         Eg:

             var class1=(function (Jq,ya){

                                  //...

                             })(jQuery,YAHOO);

          上面的模块实现了JQuery和YUI库。这样做的目的,保证了模块的独立性,还使得模块之间的依赖变得明显。

    【下一章节】

  • 相关阅读:
    java—数组乘积输入: 一个长度为n的整数数组input 输出: 一个长度为n的数组result,满足result[i] = input数组中,除了input[i] 之外的所有数的乘积,不用考虑溢出例如 input {2, 3, 4, 5} output: {60, 40, 30, 24}
    深入理解按位异或运算符
    针对数组的三中排序方式:冒泡排序,选择排序,插入排序
    笔试题目整理
    Android中AIDL通信机制分析
    android消息处理机制之2handler与looper,MessageQueue:的关系
    Android消息处理机制(Handler 与Message)---01
    vim 批处理
    React 组件条件渲染的几种方式
    vim命令行模式
  • 原文地址:https://www.cnblogs.com/fang-beny/p/Javascript.html
Copyright © 2020-2023  润新知