发表于: 2017-06-18 21:58:30
1 864
今天完成的事:写完了上下线的传参,还有编辑的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封装打包,定义新的规则,然后通过切割模块化,去弄
评论