zerojs! 造出最好的 CMS 輪子

zerojs是一個基於nodejs、angularjs、git的CMS。在它之上能夠繼續開發出博客、論壇、wiki等相似的內容管理型系統。html

  • 擁抱開發者和社區
    • 層次清晰,高度解耦。先後端即便分開也都是徹底可獨立運行的系統。
    • 每個層次都是用當前業界最流行的工具和方法做爲底層,對開發者來講幾乎無學習成本。
    • 模塊、主題、套件體系簡單成熟,二次開發沒有坑。

後端架構前端

zerojs 底層基於 sails。繼承了 sails 三大優點:node

  • 強大的 Model 層。sails實現了本身的ORM,接口幾乎和 mongoose 徹底一致,簡單易用。配合上社區統一的數據庫驅動,可完美支持mongo、mysql、redis、postgreSQL等等數據庫。ORM封裝完善,設置能夠對單個model指定使用的數據庫。
  • 爲model提供全自動的RESTful接口。實現聲明便可用。
  • controller 和 view 徹底基於express實現,無附加學習成本。

zerojs 的核心層包含了CMS最通用的功能,特色有三:mysql

  • 內容管理功能強大。zerojs爲"內容節點","分類與標籤"等核心概念創建了統一的抽象,爲繼承者統一提供索引、摘要等功能。同時系統仍然很是開放,容許開發者聲明普通的model,而後經過mixin的方式使用部分功能。
  • 系統可擴展性高。幾乎在每一個流程的關鍵動做處都使用了hook來支持擴展。例如「增、刪、改、查」的前先後後。同時在系統操做(例如記錄統計數據)處都採用了選擇driver的方式來支持適合開發者的需求。
  • 對前端前無古人的友好。原生支持傳統模板渲染、前端MVVM框架渲染及混合渲染等多種方式。系統默認提供一整套angular模塊(包括登錄、註冊、節點增刪改查等)給開發者隨意組合使用,可實現幾乎 0 代碼的狀況下將前端變成單頁應用。工程化問題(如靜態資源的壓縮打包)由系統自動根據當前環境完成。

zerojs 的擴展層基於git實現,優點:git

  • 代碼安全有保障,不會搞掛系統。
  • 一鍵便可在當前開發環境打包本身開發的新功能。無需手動整理。

 

如下是一個基於zerojs打造的博客系統基礎模塊示意圖:angularjs

 

前端架構redis

前面已經提到 zerojs 對前端提供的所有都是標準的 REST 接口,而且在 view 的渲染上支持多種方式。意味着前端徹底能夠自主開發,甚至徹底拋棄掉服務器端的view層,不在同一環境也能夠。這裏講的前端架構,主要是指zerojs默認提供的angular的前端架構。下面分三個前端最關心的問題來說:sql

1、如何使用默認前模塊?數據庫

zerojs 爲"用戶、節點、標籤、統計"等每個主要功能都提供了一整套完善的angular模塊,而且都有默認的controller。不少時候,例如新增一種節點類型如「日記」,開發者須要作的僅僅是很是簡單的三步:express

  1. 在後端聲明一下這個類型。
  2. 前端引入文件,
  3. 而後寫前端的模板文件就夠了。

即便要增長字段,都只要寫模板就夠了。默認模塊已經通過了各類場景的錘鍊,功能很是完善。若是你真是遇到很是特別,必定要本身手動處理的地方,那你仍然能夠大量複用默認模塊的service、filter等等。幾乎全部功能都被封裝到了service裏。 很是值得注意的時,這些默認模塊和zerojs的後端沒有任何耦合!這意味着即便你要徹底換成本身的後端,只要接口標準,那麼這些模塊也都是可用的。

2、如何處理預加載的數據?

在作單頁應用的時候,經常爲了節省請求、加速第一屏顯示速度而把讓服務器端提早把一些數據直接渲染在頁面上,例如"當前用戶的基本信息","第一屏數據"等。zerojs在處理view的時候,遇到"渲染單個節點"、"渲染節點列表"都會默認將節點內容直接渲染到頁面上,在angular中,引入系統默認提供的preload模塊便可獲取到這些數據。不過仍然不用太操心,系統提供的節點增刪改查、列表渲染、單個節點渲染等默認angular模塊都已經自動支持使用preload數據了。開發者仍是隻要正常寫模板就好。

3、前端腳本的模塊依賴、打包壓縮等如何處理?

這些問題都是工程問題,zerojs在生產環境會分析模板而後統一打包再注入到模板中。將來在view層可能會推出CDN模塊,對前端更友好!

 

 下面是一個基於zerojs打造的博客系統,固然,絕不客氣地說要成爲博客中的王者。

http://www.cnblogs.com/sskyy/p/3918299.html

相關文章
相關標籤/搜索