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

相关文章
相关标签/搜索