【转】MVVM大比拼小结
目前完成4篇源碼分析文章:
- MVVM大比拼之knockout.js源碼精析
- MVVM大比拼之avalon.js源碼精析
- MVVM大比拼之vue.js源碼精析
- MVVM大比拼之AngularJS源碼精析
分析所關注的點集中在 :雙工綁定的實現機制、視圖編譯等幾個關鍵點。建議讀者從knockout開始按順序閱讀。 關于性能測試,vue的作者已經做過了,在這里。
之后的文章將關注一下各個框架在repeat指令下的實現。另外準備再深入介紹一下bacon.js,從另外一個角度看數據與視圖。
?
zerojs! 造出最好的 CMS 輪子
zerojs是一個基于nodejs、angularjs、git的CMS。在它之上可以繼續開發出博客、論壇、wiki等類似的內容管理型系統。
- 擁抱開發者和社區
- 層次清晰,高度解耦。前后端即使分開也都是完全可獨立運行的系統。
- 每一個層次都是用當前業界最流行的工具和方法作為底層,對開發者來說幾乎無學習成本。
- 模塊、主題、套件體系簡單成熟,二次開發沒有坑。
后端架構
zerojs 底層基于 sails。繼承了 sails 三大優勢:
- 強大的 Model 層。sails實現了自己的ORM,接口幾乎和 mongoose 完全一致,簡單易用。配合上社區統一的數據庫驅動,可完美支持mongo、mysql、redis、postgreSQL等等數據庫。ORM封裝完善,設置可以對單個model指定使用的數據庫。
- 為model提供全自動的RESTful接口。實現聲明即可用。
- controller 和 view 完全基于express實現,無附加學習成本。
zerojs 的核心層包含了CMS最通用的功能,特點有三:
- 內容管理功能強大。zerojs為"內容節點","分類與標簽"等核心概念建立了統一的抽象,為繼承者統一提供索引、摘要等功能。同時系統仍然非常開放,允許開發者聲明普通的model,然后通過mixin的方式使用部分功能。
- 系統可擴展性高。幾乎在每個流程的關鍵動作處都使用了hook來支持擴展。例如“增、刪、改、查”的前前后后。同時在系統操作(例如記錄統計數據)處都采用了選擇driver的方式來支持適合開發者的需求。
- 對前端前無古人的友好。原生支持傳統模板渲染、前端MVVM框架渲染及混合渲染等多種方式。系統默認提供一整套angular模塊(包括登陸、注冊、節點增刪改查等)給開發者隨意組合使用,可實現幾乎 0 代碼的情況下將前端變成單頁應用。工程化問題(如靜態資源的壓縮打包)由系統自動根據當前環境完成。
zerojs 的擴展層基于git實現,優勢:
- 代碼安全有保障,不會搞掛系統。
- 一鍵即可在當前開發環境打包自己開發的新功能。無需手動整理。
?
以下是一個基于zerojs打造的博客系統基礎模塊示意圖:
?
前端架構
前面已經提到 zerojs 對前端提供的全部都是標準的 REST 接口,并且在 view 的渲染上支持多種方式。意味著前端完全可以自主開發,甚至完全拋棄掉服務器端的view層,不在同一環境也可以。這里講的前端架構,主要是指zerojs默認提供的angular的前端架構。下面分三個前端最關心的問題來講:
一、如何使用默認前模塊?
zerojs 為"用戶、節點、標簽、統計"等每一個主要功能都提供了一整套完善的angular模塊,并且都有默認的controller。很多時候,例如新增一種節點類型如“日記”,開發者需要做的僅僅是非常簡單的三步:
即使要增加字段,都只要寫模板就夠了。默認模塊已經經過了各種場景的錘煉,功能非常完善。如果你真是遇到非常特別,一定要自己手動處理的地方,那你仍然可以大量復用默認模塊的service、filter等等。幾乎所有功能都被封裝到了service里。 非常值得注意的時,這些默認模塊和zerojs的后端沒有任何耦合!這意味著即使你要完全換成自己的后端,只要接口標準,那么這些模塊也都是可用的。
二、如何處理預加載的數據?
在做單頁應用的時候,常常為了節省請求、加速第一屏顯示速度而把讓服務器端提前把一些數據直接渲染在頁面上,例如"當前用戶的基本信息","第一屏數據"等。zerojs在處理view的時候,遇到"渲染單個節點"、"渲染節點列表"都會默認將節點內容直接渲染到頁面上,在angular中,引入系統默認提供的preload模塊即可獲取到這些數據。不過仍然不用太操心,系統提供的節點增刪改查、列表渲染、單個節點渲染等默認angular模塊都已經自動支持使用preload數據了。開發者還是只要正常寫模板就好。
三、前端腳本的模塊依賴、打包壓縮等如何處理?
這些問題都是工程問題,zerojs在生產環境會分析模板然后統一打包再注入到模板中。未來在view層可能會推出CDN模塊,對前端更友好!
?
?下面是一個基于zerojs打造的博客系統,當然,毫不客氣地說要成為博客中的王者。
http://www.cnblogs.com/sskyy/p/3918299.html
總結
以上是生活随笔為你收集整理的【转】MVVM大比拼小结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何从小引导孩子财商教育?看完就会了!
- 下一篇: C# 编程规范