Sue前面分享的两篇文章,介绍了内容管理系统(CMS)关于内容生产和内容过滤的部分。那么被生产出来并通过过滤的内容,如何呈现给我们的内容消费者呢?

我们都知道,在客户端上的开发实现,版本一旦发布了出去,如果有东西需要调整,那就要再修改代码,就算是再小的改动,都需要经过测试后再更新,而每一次的更新本身又存在可能出现各种各样问题的风险。

如果我们能提供动态可配置的能力,通过模板化来实现内容的呈现,那就可以减少开发的成本,同时也能够更高效地进行不同产品/运营方案的对比试验。

由此可知,页面动态配置是内容管理系统(CMS)关于如何更灵活地呈现内容的解决方案。

1. 页面拆解&组成部分

在这个“潮流眼镜专场”页面,Sue截了三张图,我们来一一拆解,看看这个页面都有什么:

  • 一个带着黑超的王俊凯(图片)
  • 一堆优惠券(优惠券领取/限定店铺优惠券使用入口模块)
  • “超级大牌”(知名品牌的店铺入口模块)
  • “必买清单”(热销/推荐商品的购买入口模块)
  • ……

像这样一个动态化的页面,我们可以按以下3层次来拆分:页面——卡片——组件

  • 页面,指的是整体可滑动页面实体
  • 卡片,指的是页面内可按行划分的一个一个独立区块(又称为”楼层”)
  • 组件,指的是卡片内部一个独立的、业务级别的单元

三者之间的层级关系见下图:

2. 实现原理

弄清楚了动态页面的组成部分,那他们仨是如何联合起来工作的,最终呈现出我们所看到的页面内容呢?

当用户访问某页面,到最后呈现出完整的页面内容,主要是通过以下三步完成的:

  • 一系列的初始化(包括初始化卡片库和组件库、数据解析器、布局框架)
  • 数据的解析(包括解析卡片和组件的类型,解析卡片和组件的基本样式)
  • 对页面进行渲染(根据卡片提供的布局信息进行布局、根据组件提供的组件信息获取组件内容)

概括的说,就是:首先按照布局去解析出各组件位置,然后再去解析组件的内容(样式、图片、背景、链接等),最终解析出对应的自定义页面内容。

3. 要点说明

在聊动态化页面具体的配置流程之前,想和大家再多聊聊,Sue在学习和工作的过程中,总结和整理一些要点,然后通过这些来加深对整体的理解。

3.1 组件

它不是指显示的一行小字、一个明显扎眼的按钮,也不是一张帅哥美女的明星图片。它是需要提前定义好,并写入到框架(代码)中的。而组件定义的标准就是业务化,要求是能承担一定业务能力的最小复合单元。

这也基本可以说是作为PM定义需求的一大通用原则。

每个组件都需要单独设计,定义其规则和样式。

组件的基本样式:组件背景、组件外边距/内边距、组件的宽高比,除此之外还可能有额外的自定义样式如:字体颜色、字体大小、组件间的空隙,对应的跳转链接等等。

不同的组件有不同的功能,表示不同类型的内容。

组件的常见种类:搜索栏、公告、列表导航、富文本、标题栏、按钮组图文、按钮组文字、单张图片、图片轮播、优惠券等等。

3.2 卡片

卡片负责对组件进行布局。卡片不需要布局模板,只需要描述卡片的类型即可,卡片的类型也是注册在框架里的。

  • 对卡片的描述,可分成:标题、布局和样式等。其中最重要的部分是:布局,因为它包含了内嵌的组件模型,卡片的布局就是对包含的组件来布局。
  • 常见的布局方式:流式布局、瀑布流布局、吸顶布局、悬浮布局、轮播布局等。
  • 卡片的布局描述也是声明式的,但只声明布局方式,不提供布局细节的描述。
  • 卡片的基本样式:卡片背景、卡片外边距/内边距、卡片内组件间距、列数。

3.3 页面

动态化页面指的是布局动态化,是通过布局嵌套组件的形式搭建整个页面。一个页面内嵌套了多个卡片,一个卡片又嵌套了多个组件

4. 步骤概要

明确了页面动态化的实现原理,那我们如果需要配置这么一个页面,需要提前准备什么,做什么?

这里分前、中、后三个环节,来跟大家聊聊配置工作所涉及到的流程。

4.1 开始配置前

1)明确目的和重点

  • 要配置的这个页面,运营目的是什么?
  • 通过页面,想呈现的内容是哪些?
  • 内容不同,要重点突出的信息是什么?

2)确认已有设计和是否需要补充

  • 已有的布局样式和组件,是否可以满足配置需求,进而达到运营目的?
  • 卡片库(布局样式)和组件库有无需要补充新增的?

4.2 进行配置时

1)选择/创建页面

总体来说,页面需要支持动态化配置的情况有两种:

  • 一是,对固有的页面进行选择性的配置(选择的标准会在文章最后和大家具体探讨)。
  • 二是,依据具体运营目的,通常是活动或专题类的运营需求,创建一个新的页面,对页面进行自定义(不需要单独为了这个新页面去开发)。

2)选择卡片、然后选择组件进行布局排版

根据页面想呈现的内容和内容想突出的信息,在已有的卡片库(布局样式)和组件库,选择合适的布局样式和组件。

3)组件配置(定义样式、配置信息)

  • 这一步会涉及到一系列的样式和细节的配置,大到页面呈现的氛围,小到组件之间的间距等等。
  • 具体的样式和信息的配置项,要依据具体的需求来定义(有兴趣的小伙伴可以深入地对具体的行业和产品、内容类型去学习了解,推荐“电商行业的店铺装修”)
  • 切忌盲目地追求配置的灵活性,细分出过多的、非必要的配置项,这会导致研发的成本变高,同时导致配置工作变繁琐,应尽量控制配置项的数量,尽量做到自动获取信息,提供系统的操作性。

4.3 完成配置后

1)效果预览——确认发布

2)预览提交——审核发布

预览,是必须要有的一个步骤。Sue在这一步说的预览,是指在页面配置完成后最终效果的预览,还可能会涉及到时间维度(比如对双十一零点活动页面提前设置定时发布的预览)。另外还有一种预览,是指在配置过程中的边配边看,主要是针对样式细调的效果预览(比如组件换不同的背景颜色)。

让操作人员在完成配置后,在进行发布前,对页面的配置效果先进行预览,以确保最终呈现的页面满足需求和符合要求。

预览完效果后,进行提交,等待审核发布,则可以依据公司/团队具体的情况,进行步骤细化。

通常,初创型公司由于运营团队的组建较为精简,常见的流程是:运营人员完成配置后,预览一下效果,确认没问题就操作发布了。没有中间审核的这一步,预览到发布,通常是同一个人。

但在对内容管理有明确的流程和规范,并且人员配备完善的公司,流程通常是第2)种。

这中间涉及到多个不同的角色,以及角色背后的权限细分。有的人负责配置,预览后提交审核,对呈现效果负责。有的人负责审核,最终确认发布,对整体进行把控。

所以具体的流程是:效果预览——提交审核——进行审核——确认发布

附:整体的配置步骤说明图

5. 需求提取

明确了页面动态化的实现原理,以及配置页面的工作流程,那接下来就是PM最熟悉的内容了:提取需求,完成产品设计。

产品设计和后期不断迭代优化,都应该始终围绕以下几个方向:

  • 如何使工作更高效
  • 如何使协作更顺畅
  • 如何使管理更智能
  • 如何使权责更明确
  • 如何使风险更可控
  • 支持快速试验,用数据来指导决策

基于实现原理、配置流程和产品设计方向,Sue提炼出了以下6大需求点:

(1)管理

  • 组件库管理:不支持直接创建一个新的组件,只能在系统已有的组件库里面选择。
  • 卡片库管理:(同组件库)不支持直接创建但可直接调用。除此之外,还有一个很重要的功能:需支持一键上下线卡片(在出现问题时立即可做线上的紧急处理)。
  • 页面管理:需支持一键上下线页面(同样是应急处理的功能支持)、版本通配(可解决新版本发布时的配置效率)。
  • 权限管理:对应组织结构或业务线,做页面、操作和数据等的权限细分。
  • 变更记录:让每次变更都有记录可查,防止线上数据被随意更改。

(2)编辑(配置)

在配置不同类型的页面时,提供对应的配置功能:

1)对固有页面的配置

  • 选择页面
  • 选择卡片、定义卡片样式、配置卡片内容(选择组件)
  • 选择组件、定义组件样式、配置组件内容
  • 配置更多页面信息:定义生效时间、失效时间、页面名称

2)对创建页面的配置

  • 创建页面
  • 选择卡片、定义卡片样式、配置卡片内容(选择组件)
  • 选择组件、定义组件样式、配置组件内容
  • 配置更多页面信息:定义生效时间、失效时间、页面名称

3)除此之外,还应该提供复制创建等满足高效配置的功能

  • 可批量复制地创建页面
  • 可批量复制地创建卡片

(3)预览

配置预览:对应的是配置过程中的效果查看,主流的交互是拖动到相应位置,设置内容后实时预览。

白名单预览:对应的是预发布状态,在此状态下,可通过白名单预览,提前查看效果。

时间机器预览:

  • 通过时间机器调整时间,可预览对应在将来某个时间的效果。
  • 因为不同的时间点,生效的数据不一样,确保配置符合要求和需求。

(4)审核

这个过程和一般的申请审核大致相同,需要支持和满足的需求点应包含但不仅限:

  • 待审核记录的处理通知
  • 待审核记录的呈现
  • 审核操作(效果、内容的展现、功能的使用等——预览功能)
  • 审核记录
  • 审核记录:通过、不通过(原因告知、修改指导)

(5)发布

通常完成配置后,不建议直接发布,以免存在问题的配置,直接影响到线上用户。

到了发布阶段,有以下两个发布功能是应当去满足的:

  • 预发布:增加预发布状态下,是为了进一步检查和确认配置效果,降低出现问题的风险。
  • 定时发布:支持设置所配置的页面仅在特定时间生效。由此,可提前完成相关的配置、审核等工作。临时配置容易导致问题出现,这同样也是为了使风险更可控。

(6)ABtest

俞军老师在书中分享过:由于信息的不完备性,所以所有自以为经过审慎考察做出的判断和行为,客观上说都是在试错。

同样我们所设计的内容管理系统(CMS),也应该具备这样的试错能力。

  • 支持页面、卡片级别的ABtest能力。
  • 可将每一次的配置变更做成实验变更,进行ABtest。
  • 在小范围内先试验变更的效果,最后根据数据来做决策。

(Sue前段时间刚好梳理和搭建了所在项目的ABtest系统,有专门深入去学习和做了一些总结。后面也想和大家来聊聊,在这里就算先预告一下下)

附需求点梳理脑图(但还是那句话:需要结合具体情况去定义,设计出来的产品才符合需求)

6. 思路&理念

最后来总结一下,内容管理系统(CMS)通过动态化页面对内容进行呈现的基本思路和设计理念。

基本思路:

内容管理系统(CMS)通过动态化页面对内容进行呈现的基本思路:分离内容的管理和页面的设计。页面设计存储在模板里,而内容存储在数据库中。当用户请求页面时,各部分联合动态生成一个标准的页面。

设计理念:

  • 内容管理系统(CMS)通过动态化页面对内容进行呈现的设计理念:具备足够的灵活性。
  • 只有足够的灵活,才能满足运营日常的各种需求。

而灵活性则体现在:

  • 布局能力动态变化,定义清楚最少要有多少种布局样式内置在框架里;
  • 动态能力粗粒度化,定义清楚有多少组件要注册到框架里;
  • 组件业务化,组件要求是能承担一定业务能力的最小复用单元;
  • 组件可复用,需要对同类型的组件具备回收复用的能力。

7. 产品思考

我们都明白页面动态化配置对运营、营销等方面重要意义,一方面确确实实是在减少重复性、不必要的开发工作,避免了开发资源的争夺和漫长的排期等待。但另一方面,也灵活的配置方案、便捷的配置工具,对技术的要求就相对较高了。如何在这两个方面更好地平衡,就是产品需要思考的问题了。

  • 有必要所有的页面都支持动态配置吗?
  • 哪些页面需要支持?哪些页面无需支持?哪些页面不宜支持?
  • 判断的标准和依据是什么呢?

关于这几个问题,Sue思考的答案是:并不是所有的页面都需要支持动态配置,没这个必要。

符合以下条件的页面需要支持动态化配置:

  • 用户流量集中的页面(例如首页)
  • 用户停留时间越长的页面(例如首页)
  • 用户频繁使用的页面(例如搜索页)
  • 营销空间和价值大的页面(例如专题活动页)

符合以下条件的页面无需支持动态化配置:

  • 不是交易流程必经的页面流(例如分类页;需要说明一下:交易不特指下单付费,对内容的消费本质上也算一个交易)
  • 不是用户频繁使用(例如帮助页、设置页)

符合以下条件的页面不宜支持动态化配置:

  • 一般有固定的格式展示信息(例如个人中心页)
  • 关键信息对页面转化有直接影响,用户只关注关键信息,故需突出且固定位置展示,培养用户习惯,不能随意变动(例如详情页)

以上,就是Sue对于内容管理系统CMS在内容呈现环节的总结与分享。

真正到开展对应工作的时候,要思考的远不止本文所分享的这一些,希望Sue所分享的内容能起到一个抛砖引玉的作用。

坚持更文分享个人一些思考与想法,使自己保持输入转化、总结输出的学习习惯。如有不成熟、不正确的地方,希望有小伙伴指点赐教。欢迎讨论,共同进步。

本文由 @素小白 原创发布于人人都是产品经理,未经许可,禁止转载

题图来自 Unsplash,基于 CC0 协议

手机导航列表页面瀑布流图片无限加载代码_搭建内容管理系统CMS(3):从原理、需求到设计,一文看懂动态化页面...相关推荐

  1. 微信小程序中实现瀑布流布局和无限加载

    瀑布流布局是一种比较流行的页面布局方式,最典型的就是Pinterest.com,每个卡片的高度不都一样,形成一种参差不齐的美感. 在HTML5中,我们可以找到很多基于jQuery之类实现的瀑布流布局插 ...

  2. 利用ajax实现织梦dedecms瀑布流无限加载功能

    该功能主要用到AJAX技术! 一.首先找到并打开/plus/list.php文件,在里面找到如下代码: require_once(dirname(__FILE__)."/../include ...

  3. 如何快速写一款小而美的“上滑无限加载的控件”?| 博文精选

    作者 | ShuSheng007 责编 | 郭芮 出品 | CSDN博客 在日常从事Android开发工作时,经常会遇到下拉刷新列表页面,上拉自动加载列表的需求, GitHub上已经有很多关于这方面的 ...

  4. 移动端判断手机横竖屏状态及加载相应样式或内容的解决方案

    移动端的开发过程中,免不了要判断横竖屏,然后在执行其他操作,比如分别加载不同样式或内容等等. 首先在做移动端开发的时候,在HTML页面head中加入如下代码 <meta name="v ...

  5. 瀑布流无限加载的原理

    无限加载也叫上拉自动加载.瀑布流.滑动底部加载等,具体指的是页面刚开始不加载全部内容, 先加载首屏或者用户屏幕可见内容,当用户滑动页面到底部后,页面才自动加载更多内容. 通过window.scroll ...

  6. JS实现-页面数据无限加载

    在手机端浏览网页时,经常使用一个功能,当我们浏览京东或者淘宝时,页面滑动到底部,我们看到数据自动加载到列表.之前并不知道这些功能是怎么实现的,于是自己在PC浏览器上模拟实现这样的功能.先看看浏览效果: ...

  7. 基于jquery响应式网站图片无限加载瀑布流布局

    分享一款效果非常酷的jQuery瀑布流布局无限加载图片效果.整个页面采用响应式布局,图片采用jQuery.Lazyload延时加载技术,提升整个页面的加载速度.效果图如下: 在线预览   源码下载 实 ...

  8. ajax瀑布流插件,jQuery瀑布流无限加载插件:jquery.falless.js

    慌慌张张,匆匆忙忙,为何生活总是这样? 难道说,我的理想,就是这样度过一生的时光?........... 真的是一年一年飞逝而去,而人的一生,又有几个一年? 第一个四年即将结束,得到了什么?又失去了什 ...

  9. 【一句话调用】h5页面 返回缓存 如js加载列表页点击进入详情页,返回后刷新的问题和无法定位问题 html 返回定位

    在做html5开发时,经常会碰到从列表页跳转到详情页,然后在点击返回或者手机手势返回后,列表内容刷新且无法定位到点击的位置,尤其包含列表加列表的情况 问题尤其明显. 解决办法如下: 1.vue的组件切 ...

最新文章

  1. 美国或将限制AI等14类新技术出口,有意针对中国
  2. 小米0扇区完整写入_真材实料霸榜DXOMARK,小米10系列凭三个卖点“感动人心”...
  3. TransactionAwareDataSourceProxy
  4. 为什么鞋带总是松开?罪魁祸首其实是…
  5. mvc html传参数乱码,SpringMVC Controller 接收页面传递的中文参数出现乱码
  6. ApacheCN 2019.4~7 总结
  7. 微课|Python使用Barrier对象实现多线程同步
  8. 关于拷贝常规数组、std::array和std::vector速度的一些测试
  9. KinectFusion: Real-Time Dense Surface Mapping and Tracking
  10. python困境_学习 Python 编程的三种困境
  11. 从精度看CPU线程:实验室与量产的差距
  12. Maven的基本使用
  13. Bluetooth LE for iOS demo. LightBlue like demo.
  14. 华硕电脑开启无线服务器,华硕ASUS路由器无线中继模式设置步骤图解
  15. 研发质量管理6大根基
  16. Error: Unresolved node modules: vue
  17. 学校计算机教室学生使用记录表,学校学生信息技术教学计划
  18. android 禁止获得焦点,防止EditText自动获取焦点
  19. Web测试中定位bug方法
  20. 面试:GET 请求能上传图片吗,已解决

热门文章

  1. JavaWeb(32) : Apache的DBUtils框架
  2. 常用文件的文件头-16进制
  3. MintUI 组件和MUI组件
  4. Android - Loading 中间显示logo,外部ing转圈加载动画
  5. Aborting commit due to empty commit message git 提交
  6. kdm桌面设置Linux,Ubuntu 13.04手动修改KDM、KSPLASH主题
  7. STM32G0+EMW3080+阿里云飞燕平台实现单片机WiFi智能联网功能(三)EMW3080完成配网,EMW3080连接到阿里云飞平台
  8. 23.centos中文字体安装--2013-06-04
  9. @Autowired 构造方法作用
  10. 注意力汇聚:Nadaraya-Watson 核回归