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

擁抱模塊化的JavaScript

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

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


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

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

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

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

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

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

復制代碼 代碼如下:

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

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

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

內聚度
內聚度指模塊內部實現,它是信息隱藏和局部化概念的自然擴展,它標志著一個模塊內部各成分彼此結合的緊密程度。好處也很明顯,當把相關的任務分組后去閱讀就容易多了。
設計時應該盡可能的提高模塊內聚度,從而獲得較高的模塊獨立性。

耦合度
內聚度是指特定模塊內部實現的一種度量,耦合度則是指模塊之間的關聯程度的度量。耦合度取決于模塊之間接口的復雜性,進入或調用模塊的位置等。與內聚度相反,在設計時應盡量追求松散耦合的系統。

相關文章

  • 新浪的圖片新聞效果

    新浪的圖片新聞效果

    新浪的圖片新聞效果...
    2007-01-01
  • 性能優(yōu)化篇之Webpack構建代碼質量壓縮的建議

    性能優(yōu)化篇之Webpack構建代碼質量壓縮的建議

    這篇文章主要介紹了性能優(yōu)化篇之Webpack構建代碼質量壓縮的建議,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-04-04
  • Redux實現組合計數器的示例代碼

    Redux實現組合計數器的示例代碼

    本篇文章主要介紹了Redux實現組合計數器的示例代碼,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • 24個實用JavaScript?開發(fā)技巧

    24個實用JavaScript?開發(fā)技巧

    這篇文章主要給大家分享了24個實用JavaScript?的開發(fā)技巧,文章圍繞JavaScript?的開發(fā)技巧講解展開全文,具有一定的參考價值,需要的朋友可以參考一下,希望對你有所幫助
    2021-12-12
  • js購物車實現思路及代碼(個人感覺不錯)

    js購物車實現思路及代碼(個人感覺不錯)

    提起購物車想必只有在一些購物網站上才可以看得到,下面為大家介紹下使用js實現的購物車,感興趣的朋友可以參考下
    2013-12-12
  • Fullpage.js固定導航欄-實現定位導航欄

    Fullpage.js固定導航欄-實現定位導航欄

    FullPage.js 是一個簡單而易于使用的插件,用來創(chuàng)建全屏滾動網站(也被稱為單頁網站)。接下來通過本文給大家介紹Fullpage.js固定導航欄-實現定位導航欄,對fullpage.js導航欄相關知識感興趣的朋友一起學習吧
    2016-03-03
  • JavaScript實現動態(tài)留言板

    JavaScript實現動態(tài)留言板

    這篇文章主要為大家詳細介紹了JavaScript實現動態(tài)留言板,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • javascript判斷機器是否聯網的2種方法

    javascript判斷機器是否聯網的2種方法

    只有機器已經聯網以后,web應用才能啟動,下面使用javascript判斷機器是否聯網,具體判斷代碼如下,有此需求的朋友可以參考下
    2013-08-08
  • Bootstrap 粘頁腳效果

    Bootstrap 粘頁腳效果

    Bootstrap 粘頁腳,說得具體一點就是“將固定高度的頁腳緊貼頁面底部”,本文給大家分享具有實現代碼,感興趣的朋友參考下吧
    2016-03-03
  • 使用watch在微信小程序中實現全局狀態(tài)共享

    使用watch在微信小程序中實現全局狀態(tài)共享

    這篇文章主要給大家介紹了關于如何使用watch在小程序中實現全局狀態(tài)共享的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用微信小程序具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-06-06

最新評論