网站内容保护(先看下小网站一般会存在哪些内容需要维护配置?)
优采云 发布时间: 2021-11-30 10:09网站内容保护(先看下小网站一般会存在哪些内容需要维护配置?)
文章长篇大论,慎入
随着网络应用的丰富和发展,网站往往跟不上海量信息衍生和商业模式变革的步伐。处理信息更新和维护往往需要大量的时间、人力和物力。——引自《百科全书》
小公司,小网站由于人员和技术问题,都处于内容管理“怜吃而弃”的境地:内容维护往往会打乱开发者的节奏,但他们不没有精力去思考 投资于解决类似问题的统一方法。
需要维护哪些运营内容
在开始之前,我们先来看看小网站中通常存在哪些需要维护和配置的内容:
现状
遇到这些内容维护,好的小公司可能会从头开始同步建立配置发布管理功能。其他的可能因为deadline被编码死了,通过release解决,只有在release频繁的时候才做配置发布管理功能。
因为是后台管理页面,一般这个配置页面比较简单,甚至缺少验证。只有人肉才能在线查看效果,判断配置是否正确。
作为有抱负的攻城狮,应该积极拒绝这样的重复性工作,通过工具或流程改善生活。
cms是什么
很久以前,内容管理已经成为一个重要的应用领域,随着时间和技术的发展,cms的功能也越来越强大。
cms简单的说就是内容管理系统(Content Management System),主要解决用户在网站建设和信息发布中的常见问题和需求。操作学员可以使用它对网站的内容进行更新、修改、审核和发布,提高信息发布的效率和准确性;它的技术核心思想是将内容管理和设计分开。
行业cms系统
由于篇幅原因,我不想比较和介绍行业内的相关系统。我只想概述相关类型。
可视化车站建设,例如
从小公司的需求和运营的专业水平来看,像云峰碟这样基于组件化页面的cms平台运营成本很高。此外,组件开发和维护成本也很高。小公司也非常昂贵。难有业务开发需求,可以沉淀自己的组件模块。所以除非你一开始不打算投资网站服务建设,你只需要搭建一个网站门面,就会用到类似的可视化建站服务。
在接下来的页面中,我们仍然以实现“传统的cms系统”为目标,并考虑如何做得更好
上诉
那么肖网站对内容管理有什么用?
但是,虽然内容配置管理有保障,但文章在“新闻”、“帮助”、“关于我们”页面开头提到的内容相似,字段一致。您是否每次都必须创建类似的配置?管理,然后在web应用中创建相关页面,然后发布应用?
目标
基于诉求,首先明确需要完成的网站内容管理小目标
通过配置自动生成“配置表”,降低开发投资成本,保证发布质量,体验成本,小层次关系和表格设计
通过内容,对数据模型进行抽象,主要分为以下三层:
cms-guanxi.png
成分
最底层的组件,收录基于jsonschema-form-vue的表单相关配置,可以使用版本管理,让配置升级更安全。
{
id: Schema.Types.ObjectId,
name: String, // 配置名称
version: String, // 版本号
jsonSchema: String, // JSONSchema
definition: String, // Form Definition
histories: Array, // 历史记录
author: String, // 用户
createdAt: Date, // 创建时间
modifiedAt: Date // 修改时间
}
模块
该模块是操作内容编辑单元,基于组件表单配置生成表单,可以保存草稿和发布数据,用于预览和在线内容
{
id: Schema.Types.ObjectId,
name: String, // 模块名称
title: String, // 模块标题
siteId: Schema.Types.ObjectId, // 所属站点ID
pageId: Schema.Types.ObjectId, // 页面ID
componentId: Schema.Types.ObjectId, // 组件ID
componentVersion: String, // 组件版本号
model: {}, // 配置数据
draft: {}, // 配置草稿
status: Number, // 状态 0: 配置更新, 1: 内容更新, 2: 发布审核
online: Boolean,
histories: Array, // 历史记录
author: String, // 用户
createdAt: Date, // 创建时间
modifiedAt: Date // 修改时间
}
为什么不直接将表单配置放在模块中,而是添加这一层组件呢?这主要是因为模块和组件之间存在“多对一”关系。一种形式配置可以在多个模块中使用;另外,上面提到的相似页面会复制相似的模块。如果将表单配置放在模块表中,过程中会出现重复数据,以后配置升级也很难同步。
页
页面是浏览器中看到的页面,主要用于保存模块的关联关系。一个页面上可能有多个独立的模块
{
id: Schema.Types.ObjectId,
name: String, // 页面名称
url: String, // 页面url
realUrl: String, // 页面实际url
useRoute: Boolean, // 是否启用路由规则
router: String, // 路由规则
siteId: Schema.Types.ObjectId, // 所属站点ID
modules: String, // 模块
owner: String, // 用户
createdAt: Date, // 创建时间
modifiedAt: Date // 修改时间
}
为什么会有网址和实际网址?这个主要考虑下面的“可视化编辑”功能,需要请求真实页面,所以页面复制发布时,需要根据“页面路由”生成实际的url
因为数据模型的核心是配置和内容,所以选择文档数据库MongoDB
整体设计
把数据模型抽象出来,我们先看看cms需要通过设计提供哪些功能
cms-jiagou.png
在设计上,cms遵循以下原则:
所以:
Web应用访问只需要改变以下几点:
过程
通过这个过程,可以更清楚的了解cms的作用
cms-process.png
创建组件配置
前端本地开发静态页面后,首先mock内容完成数据模板的分离;那么就可以使用JSON2JSONSchema工具快速生成JSONSchema结构,根据jsonschema-form-vue文档生成组件配置
cms-step1.png
创建内容模块并引用对应的组件配置(内容模块为运营内容维护单元);如果有初始数据,可以填入操作;将moduleId复制到web应用中,调用对应的方法获取cms数据;然后,web应用发布后,开发工作就完成了,以后的内容维护就交给运维同学了。
模块内容的操作和维护有两种方式:
3.1 通过模块名称查找模块进行编辑
3.2 通过页面编辑进行可视化编辑,见下
确认内容编辑无误后,保存预览
预览确认没有问题后,审核发布,内容上线
至此,cms最基本的功能已经完成;无需因副本内容更改而重新启动应用程序。
更多的
下面几页最后介绍一下“页面复制”和“可视化编辑”功能
关于页面复制
对于上面提到的新闻公告、关于我们,或者一些风格相似的活动页面,您需要提供一个快速复制创建一个新页面,然后修改页面内容。
主要思路如下:
可视化编辑
最后,必须完成一些看似科技感十足的功能,才能提供cms系统的档次,直接符合前沿。
有了模块编辑功能后,可视化编辑就是如何获取编辑后的数据并实时渲染页面预览。同时预览页面可以识别可编辑模块并显示可编辑,引起操作点击修改的欲望:
这样,立即提供一个等级
至此,文章 结束。在工作的过程中,找出工作流中更多你不喜欢处理但又不得不处理的重复性任务,思考如何使用工具和流程。妥善处理;使事情变得简单和可重复;这个思考和执行的过程,不仅可以提升你的设计和技术能力,还能增加公司对你的依赖,在升职加薪的路上。