您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

页面可配置设计构想

时间:2020-05-29 11:45:12  来源:  作者:

背景与现状

(一)背景

“不要写死”——程序开发过程中经常提到的一个问题。我们运用各种设计模式进行抽象、封装,就是为了让我们的代码看起来不是那么“死”,从而能够灵活的适应各种“变化”。

如今互联网的变化,可以说世界的变化超出每一个人的预测,那么对于快速变化的市场与用户需求,尤其我们客户多样,存在或多或少的个性化定制需求,我们需要更加快速、高效地做出响应——页面可配置的概念应运而生,其包括UI(界面与交互)、业务、数据、配置等诸多方面。

页面的自定义比作盖楼,添加一个楼层,每层可以自定义内容,譬如商品、优惠券、商品排名等。在淘宝旗下的店铺装修平台——“淘宝旺铺“中,淘宝店家可以选择基础模块的内容,编辑首页或新建页面,动态配置页面。

页面可配置设计构想

淘宝旺铺装修App


页面可配置设计构想

淘宝旺铺装修PC

这种页面配置有以下特点:

  • 静态数据或后台数据
  • 单页(多图、图文混合偏多)
  • 页面区块耦合度小,可灵活拼装
  • 新建的页面可以快速发布上线

(二)现状

目前系统各业务模块业务耦合度较高,依赖较强,没有统一的配置管理方案与渲染实现,重复造轮子。

(三)设计思考

  • 不能因为技术架构上对页面可配置支持的引入,带来新的开发成本和负担;
  • 引入可配置支持的页面应该与引入前基本保持在同样的性能表现,不能因为页面可配置明显拖慢业务性能。

所以,在实现页面可配置的前提下还有两个目标:对业务无侵入、高性能。

核心分析

(一)核心问题

可配置页面,要解决三个核心问题:

  • 页面布局和样式
  • 页面内容,即数据
  • 页面的交互

(二)页面分析

页面可配置设计构想

头条号创作者首页

上图是我截取的头条号创作者首页的图片,我把它划分成了不同的区块,并且标上了编号。整个页面,我们将它称为画布(Canvas,或者叫做页面),里面一个个带有编号的红框,称之为容器(Container)。实际上,画布(页面)也可以理解为是一个足够大的容器,也是顶级容器,便于理解,暂时称它为根容器(Root Container)。

现在我们来具体分析一下这个页面:

  • 整个详情页面被认为是一个完整的画布(白纸),由不同(大小不一)的容器构成,这些容器就像乐高积木,可以用它组装搭建成不同的页面;
  • 容器由各种组件(Component)填充,组件包含数据源、显示样式、交互逻辑等一套完整的属性(Attribute);
  • 组件中包含banner、按钮等单元,这类最小的组件单元,我们称为元素(Element),这一类元素逻辑上将无法再被拆分;
  • 原则上容器可以由更小的容器构成,它们是递归构建的,呈树形结构,这是一个迭代实现的过程,本次设计暂时不考虑嵌套。

综上分析,我们可以得出五个概念:

  • 画布(Canvas):整个页面,可以理解为一张白纸;
  • 容器(Container):整个画布可以被拆分成不同的区域(Region),每一个区域称之为容器。在这次设计方案里面,暂时不考虑容器嵌套更小容器的问题;
  • 组件(Component):组件是粗粒度的,包含部分页面的UI、数据以及与之相关的业务逻辑,容器由可以由若干个组件构成,组件填充容器的显示内容(其实组件也可以称为模块,之所以称为组件是为了后续丰富通用组件库考虑);
  • 属性(Attribute):单个组件包含数据源、样式、交互逻辑等一套完整的属性;
  • 元素(Element):组件包含若干页面元素(banner、button、tab、label等),它们是逻辑上最细粒度的单元,不可再被拆分,本期设计不细化到元素层面。

(三)页面布局

有了以上概念定义,我们再回过头看这个页面。从布局层面来看,它就是一个网格布局,以从上到下,从左到右的顺序逐个分布容器与组件,但是就这个页面来说,它还不是简单的横向纵向网格

页面可配置设计构想

网格化布局

我们将前面头条号创作者首页的内容去掉,只留下布局,那么就是上图中这个样子,为了简化逻辑,我们把容器都设计成流式布局,所有组件一个个自左往右,自上而下堆叠排列。

(四)页面内容——组件

每一个组件都有自己独立的逻辑和UI,组件之间完全解耦,这样就可以很方便地通过排列模块来完成不同的页面定制化需求,使一个页面可以展示不同的内容。原则上,组件并不依赖某一具体页面,组件也可以在不同的页面之间进行复用。

  • 组件采用声明式编写,本质是一个json对象,封装由具体的框架去实现
  • 由于声明式的组件是一个json对象,当扩展组件功能或者改变组件行为时,可以通过覆写json对象的方式实现,最后交由框架封装

(五)页面交互

  • 传统页面元素事件:点击、移入、移出、弹框、跳转页面等
  • 业务事件:提交前、提交后、数据后处理等

问题与思考

(一)布局复杂

页面布局不一定是网格化有序排列,布局样式多元,那么容器层面怎么支持与兼容是需要面临的问题

(二)组件复杂

业务组件复杂,组件入参形式多样,接入方式如何统一

(三)交互复杂

弹窗、跳转、校验、提示,各种前端交互纷杂多样

(四)业务需求迭代

  • 随着业务需求不断迭代,组件如何适应变化
  • 组件的状态数据和函数方法可以通过上述方法覆写,但是视图模板的变动如何支持?
  • 组件必须遵照容器布局系统规则暴露一些特定的属性和方法,便于注入一些数据源对象,便于容器布局系统统一管理组件
  • 画布定义好以后,在拖动组件到画布中编辑时,是否能修改画布布局? 如果能修改,技术复杂度是否可控?

(五)其他思考

  • 布局配置、渲染独立,不与业务系统耦合,制定组件接入规范;
  • 每个组件需要独立打包,组件内容牵涉业务数据调用、公共组件的调用封装问题;
  • 单个组件样式、业务相关数据与逻辑独立管理,组件之间互不影响。

规划与步骤

  • 功能:把组件库做得更丰富,尽量提供更多的基础组件
  • 易用性:扩展组件自定义功能,支持更多的属性配置
  • 落地:适应新需求和变化


Tags:页面   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
对于一些文章页面来说,想要得到提升页面进行整体质量度,除了优化研究文章主体主要内容之外,调用相关分析文章也是企业优化的重点。那么我们具体怎么调用相关文章呢,星宇SEO今天...【详细内容】
2021-12-22  Tags: 页面  点击:(6)  评论:(0)  加入收藏
《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的是一个由百度开源的低代码前端框架——amis...【详细内容】
2021-11-05  Tags: 页面  点击:(68)  评论:(0)  加入收藏
经常用支付宝的朋友,会发现支付宝首页的内容太多,花里胡哨的,有些内容,我们几乎用不到。这里,有简化首页界面的操作。第一步,打开支付宝—设置。 第二步,打开功能管理 第三步,...【详细内容】
2021-10-29  Tags: 页面  点击:(141)  评论:(0)  加入收藏
CPU在访问的页面不在物理内存时,便会产生缺页中断,请求操作系统将所缺页调入到物理内存。缺页中断与其他中断的区别? 缺页中断在指令执行期间产生和处理中断信号,一般中断在一条...【详细内容】
2021-10-19  Tags: 页面  点击:(55)  评论:(0)  加入收藏
9月9日下午,工信部有关业务部门召开“屏蔽网址链接问题行政指导会”,要求9月17日前各平台必须按标准解除屏蔽,否则将依法采取处置措施。...【详细内容】
2021-09-14  Tags: 页面  点击:(45)  评论:(0)  加入收藏
抖音中经常会有一些打开的广告还有一些刷视频中途的广告,让我们没有办法彻底的去除,所以很多用户都想要知道抖音广告怎么关闭?那么下面就让小编给大家介绍一下具体的关闭步骤,感...【详细内容】
2021-09-08  Tags: 页面  点击:(155)  评论:(0)  加入收藏
相信很多人或多或少遇到过,在搭建网站的时候,总会遇到网页加载过慢,网页显示不全,或者直接无法显示的一系列问题。往往是因为模板的缺陷而出现问题,网站文章标题显示不全,原因是标...【详细内容】
2021-08-17  Tags: 页面  点击:(94)  评论:(0)  加入收藏
来自读者的提问:如何将 Word 的页眉设置为动态适应?随着页面宽度变化,自动填满整个页面? 案例: 如下图所示,在 Word 中设置页眉,当第二页变为横向时,页眉自动适应页面宽度。 解决方...【详细内容】
2021-07-22  Tags: 页面  点击:(97)  评论:(0)  加入收藏
编辑文字,无意中发现wps文字中,页与页之间的空白,可以快速隐藏或打开,运用得当,可以极大提高编辑时的效率。那么如何隐藏/打开页面间的空白呢?1、wps文字中,如果没有进行设置,默认情...【详细内容】
2021-05-09  Tags: 页面  点击:(128)  评论:(0)  加入收藏
大家在使用qq微云上传或者下载文件,打不开了,怎么办?遇到这种情况不要着急,今天我就给大家总结了几种解决办法。 我们可以先了解下腾讯微云的三种登陆方法:网页版登陆、QQ集成...【详细内容】
2021-04-28  Tags: 页面  点击:(271)  评论:(0)  加入收藏
▌简易百科推荐
本文分为三个等级自顶向下地分析了glibc中内存分配与回收的过程。本文不过度关注细节,因此只是分别从arena层次、bin层次、chunk层次进行图解,而不涉及有关指针的具体操作。前...【详细内容】
2021-12-28  linux技术栈    Tags:glibc   点击:(3)  评论:(0)  加入收藏
摘 要 (OF作品展示)OF之前介绍了用python实现数据可视化、数据分析及一些小项目,但基本都是后端的知识。想要做一个好看的可视化大屏,我们还要学一些前端的知识(vue),网上有很多比...【详细内容】
2021-12-27  项目与数据管理    Tags:Vue   点击:(2)  评论:(0)  加入收藏
程序是如何被执行的  程序是如何被执行的?许多开发者可能也没法回答这个问题,大多数人更注重的是如何编写程序,却不会太注意编写好的程序是如何被运行,这并不是一个好...【详细内容】
2021-12-23  IT学习日记    Tags:程序   点击:(9)  评论:(0)  加入收藏
阅读收获✔️1. 了解单点登录实现原理✔️2. 掌握快速使用xxl-sso接入单点登录功能一、早期的多系统登录解决方案 单系统登录解决方案的核心是cookie,cookie携带会话id在浏览器...【详细内容】
2021-12-23  程序yuan    Tags:单点登录(   点击:(8)  评论:(0)  加入收藏
下载Eclipse RCP IDE如果你电脑上还没有安装Eclipse,那么请到这里下载对应版本的软件进行安装。具体的安装步骤就不在这赘述了。创建第一个标准Eclipse RCP应用(总共分为六步)1...【详细内容】
2021-12-22  阿福ChrisYuan    Tags:RCP应用   点击:(7)  评论:(0)  加入收藏
今天想简单聊一聊 Token 的 Value Capture,就是币的价值问题。首先说明啊,这个话题包含的内容非常之光,Token 的经济学设计也可以包含诸多问题,所以几乎不可能把这个问题说的清...【详细内容】
2021-12-21  唐少华TSH    Tags:Token   点击:(10)  评论:(0)  加入收藏
实现效果:假如有10条数据,分组展示,默认在当前页面展示4个,点击换一批,从第5个开始继续展示,到最后一组,再重新返回到第一组 data() { return { qList: [], //处理后...【详细内容】
2021-12-17  Mason程    Tags:VUE   点击:(14)  评论:(0)  加入收藏
什么是性能调优?(what) 为什么需要性能调优?(why) 什么时候需要性能调优?(when) 什么地方需要性能调优?(where) 什么时候来进行性能调优?(who) 怎么样进行性能调优?(How) 硬件配...【详细内容】
2021-12-16  软件测试小p    Tags:性能调优   点击:(20)  评论:(0)  加入收藏
Tasker 是一款适用于 Android 设备的高级自动化应用,它可以通过脚本让重复性的操作自动运行,提高效率。 不知道从哪里听说的抖音 app 会导致 OLED 屏幕烧屏。于是就现学现卖,自...【详细内容】
2021-12-15  ITBang    Tags:抖音防烧屏   点击:(25)  评论:(0)  加入收藏
11 月 23 日,Rust Moderation Team(审核团队)在 GitHub 上发布了辞职公告,即刻生效。根据公告,审核团队集体辞职是为了抗议 Rust 核心团队(Core team)在执行社区行为准则和标准上...【详细内容】
2021-12-15  InfoQ    Tags:Rust   点击:(25)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条