发表于: 2017-06-18 21:58:30

1 863


今天完成的事:写完了上下线的传参,还有编辑的http的设置问题。


明天计划完成的事:把剩下的status传参问题解决下,感觉问题还是有点的,对于data和params两种方法似乎没有彻底理解,查看资料说params是针对get方法传参的,但我自己在post方式传参的时候也没问题,这两种方法该怎么用还不是很有谱。


收获:最近看的阮一峰的js模块化的介绍,感觉有些知识点其实很多从一开始就该去了解,比如模块化的几个模式,通俗而言模块就是实现特定功能的一组方法,只要把不同的函数(以及记录状态的变量)简单地放在一起,就算是一个模块。比如最原始的:

function m1(){
//...
}
function m2(){
//...
}

上面的函数m1()和m2(),组成一个模块。使用的时候,直接调用就行了。

但有个缺陷:这会变成一个全局的函数,对于全局变量等同于“污染”,而我们对于全局变量这玩意是劲量避免的,所以这就会牵扯到模块化的问题,同时模块成员之间看不出直接关系。


一般减少全局函数或者变量,我们会去把几个函数放在一个变量里面,然后把变量通过new变成一个对象,比如

ar module1 = new Object({
_count : 0,
   m1 : function (){
//...
   },
   m2 : function (){
//...
   }
});

这样就把俩个函数都封装在了一个对象里面。使用的时候,就是调用这个对象的属性:

 module1.m1();

是,这样的写法会暴露所有模块成员,内部状态可以被外部改写。比如,外部代码可以直接改变内部计数器的值。


之后就是我们不大常用的方法,就是通过retunrn停止并返回函数,然后让函数马上执行,

var module1 = (function(){
var _count = 0;
   var m1 = function(){
//...
   };
   var m2 = function(){
//...
   };
   return {
m1 : m1,
       m2 : m2
   };
})();

但这样写的话缺陷也是非常非常明显的,使用上面的写法,外部代码无法读取内部的_count变量,这就非常尬了。


阮一峰给出的解决方案从小到大也没多种,但也是比较实用的,如果一个模块很大,必须分成几个部分,或者一个模块需要继承另一个模块,这就采用"放大模式"。

 var module1 = (function (mod){

    mod.m3 = function () {
      //...
    };

    return mod;

  })(module1);


上面的代码为module1模块添加了一个新方法m3(),然后返回新的module1模块。


然后为了解决立即执行函数的问题,可以用下超放大模式,比如:

 var module1 = ( function (mod){

    //...

    return mod;

  })(window.module1 || {});


与"放大模式"相比,"宽放大模式"就是"立即执行函数"的参数可以是空对象。


而最根本的方法,就是通过node.js封装打包,定义新的规则,然后通过切割模块化,去弄


返回列表 返回列表
评论

    分享到