上幾周一直在做公司的webos的前端代碼的重構,之中對javascript的代碼進行了重構(之前的代碼耦合嚴重、拓展、修改起來比較困難),這裡總結一下當中使用的一種代碼結構——插件式(聽起來怎麼像獨孤九劍一樣.....)。
代碼結構
這直接上代碼結構圖(javascript部分)

ps:箭頭的指向a->b,表示a調用b
由上面可以看到四種類型的東西:
控制類:提供一個全局的命名空間、儲存上下文資訊、元件、元件提供的全局方法,負責調用元件初始化。
代碼示例如下(不完整):
工具類:提供工具方法,不屬于元件和基礎類的方法将會放在這裡。
基本類:最基礎的類,供給元件使用,原則上一個能稱為對象的東西都應該寫成一個類。
例,下面元件的接口實作類:
元件:例如導航欄、工具欄、工作列、桌面元件,都是以一個元件形式存在。
在元件裡面,元件的建立、初始化、資料渲染、事件綁定都自己解決(有點像自治區)。
元件之間怎麼聯系呢?
元件與元件之間進行溝通的手段隻有一個——就是将自己給其他元件使用的方法提供給控制器(調用控制器的addglobalmethod),控制器儲存你的方法,當其他元件使用你的方法時候,就向控制器要(調用控制器的execglobalmethod )。
為啥這種結構叫插件式呢?
看過控制類群組件的代碼就知道,控制類隻負責幫助調用已經注冊到控制類裡的元件的初始化方法、元件完成關于自己的所有事。是以當我們需要做一個新的元件時候,隻需完成自身的建立、渲染、事件綁定,然後注冊到控制類裡,控制類就會幫你初始化,元件間互不幹涉,這就是插件式(好吧,這是我的了解,并沒有這種官方的定義)!!!
優點?
1、元件的維護、拓展非常簡單,因為都是獨立開來
2、添加新元件對已存在的元件幾乎沒有影響(當然你寫的元件也不要影響他其他元件、例如樣式、html)
缺點!
1、這種結構有應用場景要求,更偏向富web應用使用
轉自:http://www.cnblogs.com/lovesong/p/3427855.html