做为一个前端搬砖工,是否把80%的时间花在了活动专题页面的编码上?在电商行业,每个节日前都是前端搬砖工的加班时间周期,甚至上线前一秒还能收到领导或运营发来修改文案和图片的邮件。javascript
本文将介绍一个移动端专题活动页面制做平台的搭建思路。css
其余项目痛点分析:页面功能大同小异、需求急、时间紧、下线快、研发性很比低,前端工程师没法持续开发无穷无尽的活动页面,须要采用活动页面可视化搭建工具, 由运营人员/产品人员直接生成/修改活动页面,研发人员的工做转变为提供知足活动页面业务须要的活动模板。html
或许你也体验过现有其余页面制做平台,是否以为本身一个前端开发人员都不会使用?以下图是某一个在线页面制做工具,是否是以为比ps还复杂?前端
阿里云凤蝶vue
ice 阿里飞冰java
百度H5git
美团外卖前端可视化界面组装平台 —— 乐高github
gaea-editorweb
Vue-Layout数据库
以上开源/非开源的可视化页面制做平台,无一例外都存在使用门槛高,专业术语多,操做复杂等。
以下图所示分割组件:
统必定义页面点击事件,针对不一样的环境作不一样跳转方式,处理APP内跳转的兼容。另外还能够特定的组件定义特定的事件:例如商品列表组件,动态获取商品数据,点击事件默认跳转到商品详情页。
var url = JSON.parse(target.dataset.url)
var type = target.dataset.type
// 系统内部页面
if (type === 'inside') {
if ('isAPP') {
openApp(url)
} else {
location.href = url
}
}
if (type === 'ouside') {
location.href = url
}
if (type === 'tel') {
location.href = 'tel:' + url
}
if (type === 'mail') {
location.href = 'mailto:' + url
}
// 领取优惠券
if (type === 'coupon') {
getCoupon(url)
}
复制代码
随着组件的增长,防止页面资源太大影响页面呈现速度,这里除了公共代码,根据用到的组件,加载该组件使用的css和js代码。
// 按需生成script标签
<script src="http://example.com/??swiper.min.js,timeout.min.js,form.min.js">复制代码
在实现楼层导航菜单和图片懒加载的过程当中发现须要预约义页面高度,这就要求全部组件必须撑开自身的高度,禁止出现加载动态内容后才撑开高度的组件。
<div style="height:6.85vw;">
<img data-src="http://img.o" class="lazyload">
</div>
复制代码
生成静态页面的缓存时间不能太长,必须能够在短期内或支持用户手动推送更新页面,这里能够配合平台使用的CDN系统进行处理。
组件会随着系统迭代大幅增长,且每一个组件配置不统一,采用配置信息生成json字符串的方式保存到数据库。解耦后端的存储和接口逻辑,后端只须要提供一个增删改接口便可。
h5消费端能够采用原生、jQuery、vuejs等任何技术方案。 我的偏向使用原生(个人应用项目方案),jQuery在移动端存在的意义不大,vuejs等框架增长了消费的复杂度,活动专题页这种纯展现性的页面没有必要引入 mvv* 框架。
系统设计是一个数据生产平台,不负责消费(所见和预览也算是消费的两种),能够生成自定义格式的配置信息,供web或app消费使用。自行脑补:APP端须要预约义组件样式。
这个仍是以系统的使用简单为主,在我这个系统上,开发多作几个功能相似的组件并无太大难度,例如轮播图组件,是否把swiper的全部功能集成到一个组件上,个人想法就是分开吧,运营人员喜欢直观易用的,他想要的组件功能可能就是那么简单。
图片组件:如上图组件分割第一个组件,咱们使用一个图片组件便可,上传切割好的图片,而后定义点击区域(相似热区area,用户拖拉生成)实现点击跳转便可(PS:实际上图片组件已经能够知足页面80%的布局要求):
倒计时组件:上图有一个倒计时功能,如何尽可能覆盖平时使用要求?我采用图片出样式的原则,内部用用户随意定义各个倒计时数字样式,设计以下:
其余组件就不一一列举了,感兴趣的小伙伴能够本身尝试封装组件,还能够分装从后端获取数据的组件,好比我在实际项目中封装的“商品列表”组件等,可是别忘记组件的封装原则:图片出样式,高度要撑开。
项目开源地址: github地址
References