前言
本文是我开发了许多 H5 活动后写下的小结
正文
必备库
CSS:aqua.css
JS:kyouka
样式
端口适配
移动端:vw
pc 端:px
目前我适配两端的做法:将颜色等外观相关的属性放在一起,用媒体查询来隔开长度单位属性。小项目可以这么做,但大项目还是要写两套。
防花屏
开启gpu加速
1  | transform: rotateZ(0);  | 
加载速度慢
考虑压缩图片素材,squoosh将不透明的 png 压缩成 jpg,onlineimagetool批量压缩大小
自定义字体
用fontmin生成字体再插入页面即可
业务
ios 键盘弹出错位修复
1  | ky.iosInputScrollFix();  | 
防止提交后再次发送请求
动态绑定一个pointer-events-none类即可
安卓机兼容无限下拉加载
- 不能在底部放绝对定位的图片,否则会影响高度计算,正确的做法是在加载完成后再显示图片
 - 注意安卓有虚拟键会导致划不到底,应该给触底条件添加一个容差
 
强制刷新缓存
有的手机缓存不容易清除,此时就可以在文件后加后缀以清除缓存,例如app.js?v=1
vue 项目将资源转移至 cdn
在.env.production中配置 cdn 地址即可
注:像 app.xxx.css 这类要经常改动的文件不放在 cdn 上
vue 防止多个页面的事件重合
切换到另一个页面后,别忘了移除上一个页面的监听事件和定时器
1  | onUnmounted(() => {  | 
Date 最兼容的写法
1  | new Date("2020/12/19 00:00:00");  | 
跳转到外链后分享失效
这个问题的发生时机在除首页外的其他页面,因此尽量将外链放首页
注意点
- 发送请求后注意要同步更新页面上的数据
 - 若用户上传的图片太大,则用Compressor压缩图片后再上传
 - 展示型页面一定要注意文本的长度,单行过长则应截断(
.truncate),行数过多则做成滚动式(.overflow-scroll) - 图片很多的列表页应采用懒加载(lazyload)
 - 如果后端还没有完成接口,那么前端可以先用假数据进行模拟测试(mock)
 - 有些数据(比如活动的开始结束时间)不要写死,要读取后台,因为随时都有可能改动
 - 分享助力类活动往往需要自定义分享标题,要提前问客户
 - 切图尽量用 2 倍图,如果还不够清晰就用 3 倍图
 - 抽奖码判断中奖时要加
includes包含判断 - 海报生成为了避免出现底部多余的部分,应当固定好高度(通常是
ky.vw2px(210)) 
