欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

擁抱模塊化的JavaScript

 更新時間:2012年03月07日 07:44:23   作者:  
模塊化JavaScript的概念尤為強烈,似乎有趕超07年Ajax風(fēng)潮之趨勢

我們再一次被計算機(jī)的名詞,概念籠罩。
backbone、emberjs、spinejsbatmanjs 等MVC框架侵襲而來。
CommonJS、AMDNodeJS、RequireJS、SeaJScurljs等模塊化的JavaScript撲面而來。
模塊化JavaScript的概念尤為強烈,似乎有趕超07年Ajax風(fēng)潮之趨勢。
一、寫函數(shù)(過程式)
2005年以前,JavaScript沒人重視,只作為表單驗證等少量應(yīng)用。那時一個網(wǎng)頁上寫不了幾行JS代碼,1000行算很復(fù)雜了。這時組織代碼的方式是過程時,幾十行的代碼甚至連一個函數(shù)都不用寫。稍多的需要提取抽象出一個函數(shù),更復(fù)雜一些則需要更多函數(shù),函數(shù)間互相調(diào)用。


二、寫類(面向?qū)ο螅?/STRONG>
2006年,Ajax席卷全球。JavaScript被重視了,越來越多的后端邏輯放到了前端。網(wǎng)頁中的JS代碼量急劇增加。這時寫函數(shù)方式組織大量代碼顯得力不從心。有時調(diào)試一個小功能,從一個函數(shù)可能會跳到第N個函數(shù)去。這時寫類的方式出現(xiàn)了,Prototype 率先流行開來。用它組織代碼,寫出的都是一個個類,每個類都是Class.create創(chuàng)建的。又有YUI、Ext等重量級框架。雖然它們的寫類方式各不同,但它們的設(shè)計思路卻都是要滿足大量JavaScript代碼的開發(fā)。

三、寫模塊(現(xiàn)在,未來?)
2009年,Nodejs誕生!這個服務(wù)器端的JavaScript采用模塊化的寫法很快征服了瀏覽器端的JSer。牛人們紛紛仿效,各種寫模塊的規(guī)范也是層出不窮。CommonJS想統(tǒng)一前后端的寫法,AMD則認(rèn)為自己是適合瀏覽器端的。好吧,無論寫模塊的風(fēng)格是啥樣,寫模塊化的JavaScript卻已開始流行了。準(zhǔn)備好了嗎?(呃具煽動性)

呵,模塊化的JavaScript是啥? 這是我們發(fā)明了又一個銀彈嗎?無論是啥,就當(dāng)學(xué)習(xí)吧。至于適不適合項目中使用,各自斟酌。

寫到這也沒說什么是“模塊”。其實在計算機(jī)領(lǐng)域,模塊化的概念被推崇了近四十年。軟件總體結(jié)構(gòu)體現(xiàn)模塊化思想,即把軟件劃分為一些獨立命名的部件,每個部件稱為一個模塊,當(dāng)把所有模塊組裝在一起的時候,便可獲得問題的一個解。

模塊化以分治法為依據(jù),但是否意味著我們把軟件無限制的細(xì)分下去。事實上當(dāng)分割過細(xì),模塊總數(shù)增多,每個模塊的成本確實減少了,但模塊接口所需代價隨之增加。要確保模塊的合理分割則須了解信息隱藏,內(nèi)聚度及耦合度。

信息隱藏
模塊應(yīng)設(shè)計的使其所包含的信息(過程和數(shù)據(jù))對于那些不需要用到它的模塊不可見。每個模塊只完成一個獨立的功能,然后提供該功能的接口。模塊間通過接口訪問。JavaScript中可以用函數(shù)去隱藏,封裝,而后返回接口對象。如下是一個提供事件管理的模塊event。

復(fù)制代碼 代碼如下:

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

函數(shù)內(nèi)為了實現(xiàn)想要的接口bind、unbind、trigger可能需要寫很多很多代碼,但這些代碼(過程和數(shù)據(jù))對于其它模塊來說不必公開,外部只要能訪問接口bind,unbind,trigger即可。

信息隱藏對于模塊設(shè)計好處十分明顯,它不僅支持模塊的并行開發(fā),而且還可減少測試或后期維護(hù)工作量。如日后要修改代碼,模塊的隱藏部分可隨意更改,前提是接口不變。如事件模塊開始實現(xiàn)時為了兼容舊版本IE及標(biāo)準(zhǔn)瀏覽器,寫了很多IE Special代碼,有一天舊版本IE消失了(猴年馬月),只需從容刪去即可。

內(nèi)聚度
內(nèi)聚度指模塊內(nèi)部實現(xiàn),它是信息隱藏和局部化概念的自然擴(kuò)展,它標(biāo)志著一個模塊內(nèi)部各成分彼此結(jié)合的緊密程度。好處也很明顯,當(dāng)把相關(guān)的任務(wù)分組后去閱讀就容易多了。
設(shè)計時應(yīng)該盡可能的提高模塊內(nèi)聚度,從而獲得較高的模塊獨立性。

耦合度
內(nèi)聚度是指特定模塊內(nèi)部實現(xiàn)的一種度量,耦合度則是指模塊之間的關(guān)聯(lián)程度的度量。耦合度取決于模塊之間接口的復(fù)雜性,進(jìn)入或調(diào)用模塊的位置等。與內(nèi)聚度相反,在設(shè)計時應(yīng)盡量追求松散耦合的系統(tǒng)。

相關(guān)文章

  • uni-app實現(xiàn)全局水印示例詳解

    uni-app實現(xiàn)全局水印示例詳解

    這篇文章主要為大家介紹了uni-app實現(xiàn)全局水印示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • 按鍵測試,支持像 Ctrl+Alt+Shift+T 的組合鍵

    按鍵測試,支持像 Ctrl+Alt+Shift+T 的組合鍵

    按鍵測試,支持像 Ctrl+Alt+Shift+T 的組合鍵...
    2006-10-10
  • 5分鐘快速看懂ES6中的反射與代理

    5分鐘快速看懂ES6中的反射與代理

    這篇文章主要給大家介紹了如何通過5分鐘快速看懂ES6中的反射與代理的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用ES6具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • TypeScript的安裝、使用、自動編譯的實現(xiàn)

    TypeScript的安裝、使用、自動編譯的實現(xiàn)

    TypeScript是一種由微軟開發(fā)的開源、跨平臺的編程語言。這篇文章主要介紹了TypeScript的安裝、使用、自動編譯的實現(xiàn)方法,需要的朋友可以參考下
    2020-04-04
  • js實現(xiàn)用戶注冊協(xié)議倒計時的方法

    js實現(xiàn)用戶注冊協(xié)議倒計時的方法

    這篇文章主要介紹了js實現(xiàn)用戶注冊協(xié)議倒計時的方法,是開發(fā)會員注冊功能時非常實用的技巧,需要的朋友可以參考下
    2015-01-01
  • JavaScript實現(xiàn)的簡單煙花特效代碼

    JavaScript實現(xiàn)的簡單煙花特效代碼

    這篇文章主要介紹了JavaScript實現(xiàn)的簡單煙花特效代碼,涉及JavaScript數(shù)學(xué)運算及頁面元素基于定時函數(shù)運動的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-10-10
  • 純JS前端實現(xiàn)分頁代碼

    純JS前端實現(xiàn)分頁代碼

    這篇文章主要介紹了純JS前端實現(xiàn)分頁代碼的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-06-06
  • JavaScript表單驗證實例之驗證表單項是否為空

    JavaScript表單驗證實例之驗證表單項是否為空

    表單驗證幾乎在每個需要注冊或者是登錄的網(wǎng)站都是必不可少,下面通過本篇文章給大家介紹JavaScript表單驗證實例之驗證表單項是否為空,涉及到j(luò)s表單驗證實例相關(guān)知識,對js表單驗證實例代碼需要的朋友一起學(xué)習(xí)吧
    2016-01-01
  • php gethostbyname獲取域名ip地址函數(shù)詳解

    php gethostbyname獲取域名ip地址函數(shù)詳解

    php gethostbyname獲取域名ip地址函數(shù),需要根據(jù)域名得到ip地址的朋友有福了。
    2010-01-01
  • 詳解ES6中的三種異步解決方案

    詳解ES6中的三種異步解決方案

    這篇文章主要介紹了詳解ES6中的三種異步解決方案,詳細(xì)的介紹了這三種方案的實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06

最新評論