(TODO)移动端开发经验
调试工具
这里罗列了几款:
https://juejin.cn/post/6844903656895021063
whistle(推荐)
开源
https://juejin.im/post/6861882596927504392#heading-11
这个可以抓包,可以代理文件到本地,和 fiddler 很像。
whistle(读音[ˈwɪsəl],拼音[wēisǒu])基于Node实现的跨平台web调试代理工具,类似的工具有Windows平台上的Fiddler,主要用于查看、修改HTTP、HTTPS、Websocket的请求、响应,也可以作为HTTP代理服务器使用,不同于Fiddler通过断点修改请求响应的方式,whistle采用的是类似配置系统hosts的方式,一切操作都可以通过配置实现,支持域名、路径、正则表达式、通配符、通配路径等多种匹配方式,且可以通过Node模块扩展功能:
USB 调试
1.可以通过https://t.zhouchangju.com/tool/version.html 查看当前浏览器的内核及版本
2.如果在某个内核上无法显示,甚至移动端调试工具都无法加载,可以在 PC 上下载对应版本的浏览器内核进行调试
3.如果 PC 上无法通过下载低版本的浏览器进行调试,可以把测试机通过 USB 连接到笔记本上,然后在笔记本上的 chrome 浏览器中进行真机调试(公司虚拟机不支持 USB)
4.如果以上措施都没办法定位到问题,那么可能是平台版本导致的,比如安卓 5.0 以下的老旧版本,可能连一些基础的东西都不支持,这种情况可以查阅官方支持性文档,或者去相关的社区中寻找对应的解决方案
VConsole
给页面加入 VConsole:
1 | |
比如移动端经常会遇到页面缓存导致新修改的内容未生效,就可以通过 VConsole,输入 JS 强刷页面:
1 | |
Eruda
据尹兄说,比 VConsole 好用:
https://github.com/liriliri/eruda/blob/master/doc/README_CN.md
stats.js
帧数、内存消耗、CPU 消耗的工具
尺寸的处理
使用的是 rem.js。直接 script 标签引入 design-width 为设计稿宽度:
1 | |
替代方案 vw/vh,postcss-px-to-viewport
postcss.config.js:
1 | |
这样开发时只需要将单位写成设计稿上的数值,postcss-px-to-viewport 会将 px 转成 vw。
1 | |
常见问题
如何测试低端机型无法正常显示的问题
可以下载低版本 chrome 浏览器直接查看
whistle 搞定环境,弄个亲测可用版本
vconsole 和 e 什么工具
搞个一键开启调试的 webpack 配置项
公司的真机平台如何使用
移动端常用的 API 接口
比如监测是否位于前台、后台
判断系统类型
判断系统版本
修改默认的红色导航栏
分享、二次分享
常见的坑
音乐的自动播放
rem.js 导致 iOS 下图片资源过多时,占用 CPU 和内存过大,进而卡顿的问题
iOS 的 audio 标签报错问题
资源如何预加载
投放方不支持修改导航栏的客户端协议地址
端内投放不用添加分享按钮
页面切换到后台后,音乐仍然在播放
分享:二次分享的接口、配置要求(10jqka 域名)、协议要求(不能去掉协议头)
公司字体加载导致的获取文字包围盒错误的问题
动态柱状图用了公司的 dingstock 字体,有点大,当字体还没加载完成的时候,我们就计算了文字区域的宽度:
1 | |
结果此时获取到的宽度是 57,实际上应该是 31 才对;这样就导致最终我对文字区域的定位出错了,向左多偏移了一段距离。
解决方案:
1、字体加载时机提前:https://www.jianshu.com/p/e36b1793c642 (我们试了,不行)
2、联系设计师,换个系统默认就有的字体(仅针对 iOS 环境换个字体)
跟同事讨论了之后,还有个办法:
1、主动在页面上先画一个标签,给其指定为我们所需的远程字体
2、在document.fonts.ready之后,执行我们的其他字体相关的操作:
1 | |
手机通过电脑网络上网
电脑开启热点,手机通过热点上网
chrome inspect 模式进行调试
开发自测标准
单个图片不能大于 100kb(少量图片,可以用熊猫压缩)
音频、图片、js、css 等资源的地址,发布后需要改为静态资源服务器的地址,否则会访问不到
检查静态资源的地址,去掉写死的 http 协议头
是否压缩 js
是否去掉 console
文件名是否已存在中文
低版本浏览器是否做了不兼容的提示信息
其他工具
Chrome 插件
https://jsdevspace.substack.com/p/13-super-useful-chrome-plugins-for
参考资料
判断手机类型:
纯 JS 判断 iPhone 准确机型,iPhone6~iPhoneXs MaxLongsir的博客-CSDN 博客_js 判断 iphone 型号