JavaScript的MVC模式嚮導
多年來,我總結出了一些MVC在Web應用中的規則。這些規則對我幫助很大,且避免了大型程式碼庫陷入混亂。可能術語上不同,但這些規則對於諸如Backbone和Ember的大多數客戶端MVC框架來說都是有用的。
一些框架在MVC的命名約定中有所不同,且在關注點的分離上也稍有不同。在這個文件中,controllers(控制層)是models(模型層)和views(檢視層)的粘合劑,views(檢視層)是HTML模板,models(模型層)僅單純處理資料儲存、檢索和裝飾。這與Backbone和Spine的術語基本相同。Ember有著類似的定義,不過在分離DOM訪問控制層邏輯上更深入了一步。
控制層
- 控制層是模型層和檢視層的粘合劑。處理大部分邏輯問題甚至管理問題。保持瘦控制器
- 任務父子控制器之間的通訊均應使用事件(不要通過父控制器的例項來傳遞)
- 應該只知道其子控制器
- 應該限制單個元素,不要訪問或修改DOM的其它部分
- 應該有唯一的類名且所有與控制器有關的CSS均應由這個類名來名稱空間。
- 即使元素沒有被附加到DOM樹上,控制器也應該要工作。對於測試和驗證控制器是否在正確的範圍內,這個方法非常有效。
- 在對子元素髮射事件時,應該是可測試的。
- 在沒有不良反應的任何時候都應該有能力被重新呼叫
- 不要用DOM來儲存狀態——將所有檢視的指定狀態以例項屬性的方式儲存在控制器
檢視層
- 除了流控制和輔助功能外,應該減少邏輯性
- 當需要直接渲染時,應該讓所有資料都通過。在當前的域內,所有的資料都應該有效。
模型層
- 應該純粹地與資料、運算元據和裝飾資料關聯
- 絕不訪問控制層或檢視層
- 絕對訪問或返回DOM結點
- 在執行時,應該只能訪問或請求其它的模型
- 應該將XHR連線與程式的其餘部分抽象開來
- 應該包含所有資料驗證
Router例項
- 儘可能的減少邏輯性
- 不應該知道或訪問DOM
全域性狀態
- 你應該使用一個模組系統,不管是CommonJS、AMD、ES6模組,或其它相同的模組
- 永遠不要設定或訪問全域性變數
模組
- 你應該使用一個模組系統,不管是CommonJS、AMD、ES6模組,或其它相同的模組
- 永遠不要設定或訪問全域性變數
結語
本模式嚮導作為一份流動文件,在使用者遇到錯誤和獲得經驗的過程中不斷完善。本文件的主要目的在於能讓讀者寫出統一簡潔的程式碼。如果您對本文件有任何建議,請聯絡@maccaw。
相關文章
- JavaScript 的 MVC 模式JavaScriptMVC模式
- [轉]spring mvc註解方式實現嚮導式跳轉頁面SpringMVC
- Protobuf Java使用嚮導Java
- OAuth2.0最簡嚮導OAuth
- go語言實戰嚮導Go
- ModernUI教程:MEF應用嚮導UI
- SharePointFramework企業嚮導(八)Framework
- win10中windows元件嚮導在哪 win10系統怎樣啟動Windows元件嚮導Win10Windows元件
- SharePoint Framework 企業嚮導(七)Framework
- SharePoint Framework 企業嚮導(六)Framework
- SharePoint Framework 企業嚮導(八)Framework
- SharePoint Framework 企業嚮導(三)Framework
- SharePoint Framework 企業嚮導(四)Framework
- SharePoint Framework 企業嚮導(二)Framework
- SharePoint Framework 企業嚮導(一)Framework
- SharePoint Framework 企業嚮導(五)Framework
- SharePoint Framework 企業嚮導(十)Framework
- SharePoint Framework 企業嚮導(九)Framework
- 使用U盤安裝系統嚮導
- 使用嚮導介面 豐富細節的移倉助手
- MVC模式和MVP模式的區別MVC模式MVP
- Learn Forge tutorial - 嚮導式Forge進階教程
- 整合struts和hibernate開發嚮導 (轉)
- MVC模式原理MVC模式
- 《JavaScript物件導向精要》之六:物件模式JavaScript物件模式
- Javascript設計模式讀書筆記一 JAVASCRIPT物件導向的實現JavaScript設計模式筆記物件
- win10系統使用“焦點嚮導”的方法【圖文】Win10
- MVC開發模式MVC模式
- MVC模式已死MVC模式
- 談談MVC模式MVC模式
- 傳統MVC模式MVC模式
- MVVM與MVC模式的比較MVVMMVC模式
- 極簡架構模式-MVC模式架構模式MVC
- MySQL安全配置嚮導mysql_secure_installation詳解MySql
- 路由器設定嚮導 讓您的路由更最佳化路由器
- JavaScript設計模式之物件導向程式設計JavaScript設計模式物件程式設計
- JavaScript-設計模式-物件導向程式設計JavaScript設計模式物件程式設計
- Android之MVC模式AndroidMVC模式