【第一章】BCMS 架构选择
一直想写一个 cms 的系统,主要是想建一个博客,感觉博客对于每个 developer 都是有非凡意义的啊,既可以记录技术文摘,又可以发发牢骚,写写随笔。
这大概就是我的一个动机。
作为一个前端菜鸟,积累了一定的开发经验,最起码开发一个 cms 系统还是问题不大的。于是撸起袖子就开始干吧。
于是各种找合适的模板,不说好不好看,但一定要简洁,一定要有自己的风格,一定要让自己满意。
找了 n 个模板之后,终于挑了一个修改,于是便有了模板。
大概就是这么一个主题的博客模板,然后就是后台了。
自从有了 node.js, 写后台对于前端开发人员来说已经不再是难事,况且写过两年 Java 的本菜鸟有信心完成。
然后就是 cms 要用的技术架构选择了。
有一点,写 Java 的时候用过一个 Java 的 freecms,去发布静态网站,我一直想搞出来一个 cms 有类似的但不限于那样的功能,这也是我造轮子的原因之一。
当然造轮子是一个很漫长的过程,最开始我实在没想去搞这么复杂,先去 github 看了看,里面 star 前排的要么技术栈短缺,要么就是跟自己的需求相差较大。
其中有一个国人写的 DoraCMS, 也简单去操作了一下,看了下源码,觉得还是自己搞吧,造就造吧,当练技术了。
最开始想用 React + redux + webpack + express + es6 这样一个架构去写,因为我们公司正好用的这套东西,可以用一些 react 的框架去构造页面,写了一点感觉实在有点太重量,另外一个我想更多的去用 express,所以就换成了 es6 + webpack + express + ejs 这样一个架构去写, 这也是我们公司正在使用的另一套架构,这样去套模板也更方便。
找了一套使用 jQuery 去实现的模板,正好也可以熟悉好久不用的 jQuery。
规划的重点功能模块不会太多,主要包括:用户管理,角色和权限管理,静态化管理,栏目管理,爬虫管理。
数据库方面的话可能会比较奇葩,因为我当前在写的是没有数据库的,用的 node 的 file 系统去写的一个基础的增删改查,当然才进行了很小一部分。其实还有一个选择
是 mongodb,这个具体的数据持久化的方式可以在 package 的脚本中进行配置,目前没有精力和时间去搞太多,用 file 的主要原因是我 mac 装不上 mysql,我对 mongdb 不熟,用的实在不好,本地起的服务每次都会把上次的数据给清除。所以另辟蹊径,我觉得这也许在不同平台间会更容易切换,不用考虑数据库的问题。
整体的目录结构如上图。
这篇介绍了 bcms 的主要功能和开发语言,之后我会把每个模块开发的经历整理出来,和开发同步进行。