对官网建设后端系统的一点思考和一个不成熟的改进思路

发送到手机
使用"扫一扫"即可发送至手机

官网,也就是企业站的建设从后端的角度来看可以说是一个最简单的CMS系统的搭建,通常来说,这种系统在后端来讲几乎是没有难度的。因此,从我这个后端开发的角度来看这个问题,其本质核心在于如何用最高的效率和最少的人工来完成这种80%的时间为体力劳动的工作。

通用系统

第一步要做的就是建设一个通用的搭建企业站的系统,事实上,WoodPress等类博客系统或针对于此的二次开发也同样是这个思路。在这点上,我们稻壳互联走得更远些,在数年前就已经有了基于ASP.NET MVC的CoralNode平台,近来又开发了基于Yii框架的CoralNodePHP新系统。我认为,这种通用系统的作用主要有二:1. 从后端开发的角度来讲,最大限度的从代码细节中抽象出来,将代码逻辑上升为了对数据原型的分析,而其他的细节工作都由系统本身完成,从而节省了人工,提高了效率;2. 从客户使用的角度来讲,有了一个稳定可靠的后台编辑系统。

系统分析

其实这套系统理解起来并不复杂。

我们都知道,一个企业站可能包含的数据都是有一定规律的,拿最简单的新闻来说,“新闻”这个概念就可以被抽象为一个原型,其中包含可能的字段有:标题,作者,发布时间,来源,内容等等。将新闻变成一个原型后,后台就可以添加“新闻”原型的某个具体的数据,即“Node”,一条新闻。


图1 文章模型


图2 模型中的数据


图3 添加模型数据


数据的组装通过“原型”完成,而前台显示的组装则是通过“菜单”(CoralNode)或“栏目”(CoralNodePHP)来完成。菜单或栏目是直接与前台显示相关联的概念,栏目与前台的组织结构一一对应。让我们再来分析一下,一个企业站前台的页面可能是什么样子的:

1. 它是个列表页,这也就对应了我们之前的原型概念,我们只需要让栏目与原型(或原型的分类)绑定,在前台就能够直接拿到对应原型的数据。

2. 它是个详情页,同样对应了之前的原型概念,这个页面的主要数据就是某个Node的数据。

3. 一些文字居多或图文混排,但不需要太经常修改的页面。这类页面的内容我们可以通过直接在栏目中用网页文本编辑器(比如UEidtor)来添加。

4. 有其他特殊或复杂需求的页面。处理这类页面就直接退化为MVC,通过添加新的控制器完整特殊需求。


模型与栏目对应.png

图4 模型与栏目的对应


一个不成熟的改进思路

这个想法是针对与“菜单”或“栏目”概念的,“原型”的组建可以说是有一定脑力劳动成分在其中的,比较难以自动化完成。而针对“菜单”或“栏目”这种与前台显示相关联的概念可能在设计稿完成时就可以大概确定下来了,而我们系统中添加菜单的做法还是传统的网页交互方式,即“点击添加按钮”->“填写某菜单相关信息”->“点击提交”这个流程走下来的。考虑到其中的点击填写再点击加上网络延迟,这中间大概还是有时间可以节省出来的。

目前我有个想法——将菜单信息直接写为Json格式直接导入,具体如下:

[
{
    "title" : "首页",
    "slug" : "index",
},
{
    "title" : "新闻中心",            // 菜单标题
    "slug" : "news",            // 代号,用于找到对应菜单的标识
    "proto" : "news",            // 对应的原型,可以填写原型slug或id,若有此项则代表此页为列表页
},
{
    "title" : "关于我们",
    "slug" : "about",
    "children" :             // 通过“children”来建立子菜单
        {
            "title" : "机构介绍",
            "slug" : "introduction",
        },
        {
            "title" : "历史",
            "slug" : "history",
            "proto" : "21"    // 相册模型
        },
},
]

之后可以通过网页<textarea>标签或上传.json文件来传至系统,系统处理json来向数据库中添加菜单或栏目信息。个人感觉这是一种比后台添加表单提交更节省时间的方法。


对官网建设后端系统的一点思考和一个不成熟的改进思路

对官网建设后端系统的一点思考和一个不成熟的改进思路

分享: