拥抱模块化的JavaScript

我们再1遍被电脑的名词,概念笼罩。

 

backboneemberjsspinejsbatmanjs 等MVC框架侵犯而来。

 

CommonJSAMDNodeJSRequireJSSeaJScurljs
等模块化的JavaScript概念及库扑面而来。

 

模块化JavaScript的概念尤为优良,就如有赶上并超过07年Ajax风潮之大势。

 

一、写函数(过程式)

贰零零伍年在此之前,JavaScript没人爱慕,只当作表单验证等为数不多用到。那时3个网页上写不了几行JS代码,一千行算很复杂了。那时组织代码的形式是进程式,几十行的代码甚至连三个函数都不用写。稍多的内需领取抽象出3个函数,更复杂一些则须求越多函数,函数间相互调用。

 

 

二 、写类(面向对象)

2006年,Ajax席卷天下。JavaScript被赏识了,更加多的后端逻辑放到了前者。网页中的JS代码量大幅度扩大。那时写函数方式协会多量代码显得力不从心。有时调节和测试2个小效能,从贰个函数可能会跳到第N个函数去。这时写类的不二法门出现了,Prototype 率先流行开来。用它协会代码,写出的都以四个个类,每个类都以Class.create创制的。又有YUIExt等重量级框架。尽管它们的写类格局各差别,但它们的设计思路却都是要满足多量JavaScript代码的费用。

 

三、写模块(现在,未来?)

二零零六年,Nodejs诞生!这几个服务器端的JavaScript选择模块化的写法相当的慢克服了浏览器端的JSer。牛人们纷纭效法,各个写模块的正规化也是司空眼惯。CommonJS想统一前后端的写法,英特尔则以为自己是吻合浏览器端的。好吧,无论写模块的作风是啥样,写模块化的JavaScript却已起先流行了。准备好了吗?(呃具煽动性)

 

呵,模块化的JavaScript是啥?
那是大家证明了又3个银弹呢?无论是什么,就当学习吧。至于适不适合项目中动用,各自研商。

 

写到那也没说哪些是“模块”。其实在处理器世界,模块化的概念被珍视了近四十年。软件总体结构展现模块化思想,即把软件划分为局部独立命名的预制构件,各种部件称为叁个模块,当把持有模块组装在联合署名的时候,便可收获难点的多个解。

 

模块化以分治法为根据,但是否意味着大家把软件无界定的分开下去。事实上当分割过细,模块总数扩张,各个模块的资金确实减弱了,但模块接口所需代价随之大增。要力保模块的客观划分则须领会新闻隐藏,内聚度及耦合度。

 

音讯隐藏

模块应设计的使其所包蕴的新闻(过程和数目)对于那三个不需求接纳它的模块不可见。各类模块只实现2个单身的效应,然后提供该功用的接口。模块间透过接口访问。JavaScript中能够用函数去潜伏,封装,而后再次来到接口对象。如下是二个提供事件管理的模块event。

event = function() {
    // do more
    return {
        bind: function() {},
        unbind: function() {},
        trigger: function() {}
    };
}();

函数内为了促成想要的接口bind、unbind、trigger恐怕须求写过多广大代码,但那么些代码(进程和数目)对于其他模块来说不要公开,外部只要能访问接口bind,unbind,trigger即可。

 

消息隐藏对于模块设计好处11分明白,它不仅援救模块的互动开发,而且还可削减测试或前期维护理工科人作量。如日后要修改代码,模块的隐没部分可随意变更,前提是接口不变。如事件模块初叶完毕时为了协作旧版本IE及行业内部浏览器,写了好多IE
Special代码,有一天旧版本IE消失了(猴年马月),只需从容删去即可。

 

内聚度

内聚是出自结构化设计的三个定义,简单说内聚度量了单个模块内挨家挨户要素的关联程度。最不希望出现的内聚正是偶然性内聚,即将完全无关的肤浅塞进同1个模块或类中。最希望现身的内聚是作用性内聚,即三个模块或类的各要素一同工作,提供某种清晰界定的行事。

内聚度指模块内部贯彻,它是消息隐藏和局地化概念的自然扩充,它标志着贰个模块内部各元素互相结合的牢牢程度。好处也很明显,当把相关的职分分组后去读书就便于多了。设计时应当尽量的增加模块内聚度,从而获得较高的模块独立性。

 

耦合度

耦合也是来自结构化设计,史蒂文斯、迈尔斯和Constantine将耦合定义为「二个模块与另三个模块之间创造起的涉嫌强度的度量。强耦合使系统变得复杂,因为只要模块与任何模块中度相连,它就麻烦单独的被清楚、变化和纠正」

内聚度是指特定模块内部贯彻的一种衡量,耦合度则是指模块之间的关联程度的衡量。耦合度取决于模块之直接口的纷纷,进入或调用模块的职分等。与内聚度相反,在筹划时应尽大概追求松散耦合的系列。

 

相关:

结构化编制程序

Loose Coupling, High
Cohesion

JavaScript中模块“写法”

相关文章