开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 7 天,点击查看活动详情
跨平台开发框架,一套代码多端编译(iOS、Android),APP端基于能力层/渲染层分离的架构设计,虽然前端人员用JS开发,但基于框架的编译规则和JS的运行环境不同,造成与传统H5开发有一定区别,下面列出常见的注意事项:
1. 浏览器专用的window、document、navigator、location对象,包括cookie等存储,只有在浏览器中才有,app和小程序都不支持.依赖document的很多HTML的库,比如jquery无法使用,localstorage 改成 uni.storage
2.css *选择器不支持;元素选择器里没有body,改为了page
3.css里背景图和字体文件,尽量不要大于40k,因为会影响性能(经过验证和大小无关,高度不能超过4000px)
4.static 目录下的 js 文件不会被编译,如果里面有es6的代码或less/scss不经过转换直接运行,在手机设备上会报错。
5.js文件不支持使用/开头的方式引入,可以使用相对路径,或者@/
6.编译期判断环境可用[条件编译][1],运行期判断可用uni.getSystemInfoSync().platform判断环境。
7.在字体或高度中使用了 rpx ,那么需注意这样的写法意味着随着屏幕变宽,字体会变大、高度会变大。如果你需要固定高度,则应该使用 px 。
8.App端,在 pages.json 里的 titleNView 或页面里写的 plus api 中涉及的单位,只支持 px,不支持 rpx
9.字体图标网络路径必须加协议头 https
10.若需要禁止蒙版下的页面滚动,可使用 @touchmove.stop.prevent="moveHandle",moveHandle 可以用来处理 touchmove 的事件,也可以是一个空函数。
11.App端若要使用操作window、document的库,需要通过renderjs来实现
12.splash(启动封面)是App必然存在的不可取消的。splash自定义封面只能.9.png或png,不要用jpg改名为png
13.scroll-view 不适合放长列表,有性能问题。长列表滚动和下拉刷新,应该使用原生导航栏搭配页面级的滚动和下拉刷新实现
14.页面结构复杂,css样式太多的情况,使用 image 可能导致样式生效较慢,出现 “闪一下” 的情况,此时设置 image{will-change: transform} ,可优化此问题。
15.App平台:使用 组件,打包 App 时必须勾选 manifest.json->App 模块权限配置->VideoPlayer 模块
16.App平台:如果使用的视频路径为本地路径,需要配置资源为释放模式:在 manifest.json 文件内 app-plus 节点下新增 runmode 配置,设置值为liberate。
17.App端如需选择非媒体文件,可在插件市场搜索文件选择,其中Android端可以使用Native.js,无需原生插件,而iOS端需要原生插件
18.关于一些权限的使用,类似相机,语音,都要先判断一下设备的访问权限是否开启。
19.屏幕高度=状态栏高度+原生导航栏高度+可使用窗口高度+原生tabbar高度
20.从APP分享到微信时,无法判断用户是否点击取消分享,因为微信官方禁掉了分享成功的返回值