前言:您在h5正常运行的代码,跑到模拟器/真机不一定正常,uniapp开发请务必连真机调试,本文仅针对uniapp开发安卓app进行个人总结
1. tabbar的icon(无论是active、还是默认),使用svg格式的话h5正常显示,但是跑到模拟器/真机不显示。
2. 使用uni.navigateTo跳转页面可以拼接要带的参数到新页面,在新页面可以使用onLoad(参数)接收
但是需要注意,在h5页面能够在vue文件里面访问opinion,但是跑到模拟器/手机,或者打包之后opinion可是不能够在onLoad以外的其他的地方获取,所以最好还是把opinion存到data里面。
3. 注意一些app都有的交互习惯,例如
3.1 滑动穿透 (也就是)会在 3.2.2的组件中出现
<view class="pop-box" @touchmove.stop.prevent></view>
3.2 在合理的地方使用onBackPress阻断手机物理按键/手势的返回
onBackPress 回调参数对象说明:
| 属性 | 类型 | 说明 |
|---|---|---|
| from | String | 触发返回行为的来源:'backbutton'——左上角导航栏按钮及安卓返回键;'navigateBack'——uni.navigateBack() 方法。支付宝小程序端不支持返回此字段 |
export default {
data() {
return {};
},
onBackPress(options) {
console.log('from:' + options.from)
}
}
3.2.1 例如日历组件(## Calendar)选择的时候返回应该是关闭日历选择
3.2.2 类似的还有 ## Picker选择组件、## DatetimePicker日期选择器 ## ActionSheet 操作菜单 ## Popup 弹出层等
3.3 其实popUp弹出层右侧的 箭头icon尽量要与出现方向 相同
3.4 uniapp使用vw、vh、百分比(单位)、rpx单位布局、flex布局
rpx单位不是rem,是一种根据屏幕宽度自适应的动态单位。假如屏幕宽度是750px,然后开发稿是350px,这时候1px = 2rpx 并且你写2rpx之后,届时打包安装到不同手机时,会按照比较展示适应px量
<view class="pop-box" @touchmove.stop.prevent></view>
3.5 下拉刷新,上拉加载更多。(实现思路可以去看uniapp官方)的scroll-view组件
3.6 在开发uniapp时,要留页面的底部安全区域(例如留出tabbar的空间等),否则部分ui、或者交互被遮挡
3.7 app不像浏览器,app网络请求失败如果没有提示,使用者会一脸茫然,而不像浏览器能够手动刷新。可以适当加①全局异常捕获提示 ②合理的骨架屏表示加载中 ③友好的交互方便再次请求
4. uniapp在h5和真机调试/模拟器时,布局和执行的代码可以不同
// #ifndef H5
需要在非h5环境下执行js代码
// #endif
// #indef H5
需要在h5环境下执行js的代码
// #endif
<!-- #ifdef H5 -->
在template里面写标签,需要h5环境执行的代码注释
<!-- #endif -->
<!-- #ifndef H5 -->
在template里面写标签,需要非h5环境执行的代码注释
<!-- #endif -->
5. 在app里面无法直接访问 window、document,但是您使用的组件需要访问时,可以使用render.js进行获取。
6. 一些关于手机权限的访问,类似相机,语音,都要先判断设备的访问权限是否开启,在进行调用。
7. 根据uniapp官方文档显示,navigateTo, redirectTo 只能打开非 tabBar 页面,switchTab 只能打开 tabBar 页面.
8. easyCom是个好东西,避免了你经常引入、注册公用组件文档
9. 在sass里面如何使用@路径符?
.test{
background:url("~@/static/icon/a.svg")
}
10. uni-app会将pages.json -> pages配置项中的第一个页面,作为当前工程的首页(启动页)。
11. 区分清楚什么是组件生命周期,什么是页面生命周期
例如onLoad是什么周期?created是什么周期?在uniapp可以一起使用吗?
页面生命周期
uni-app 支持如下页面生命周期函数:
| 函数名 | 说明 | 平台差异说明 | 最低版本 |
|---|---|---|---|
| onInit | 监听页面初始化,其参数同 onLoad 参数,为上个页面传递的数据,参数类型为 Object(用于页面传参),触发时机早于 onLoad | 百度小程序 | 3.1.0+ |
| onLoad | 监听页面加载,其参数为上个页面传递的数据,参数类型为 Object(用于页面传参),参考示例 | ||
| onShow | 监听页面显示。页面每次出现在屏幕上都触发,包括从下级页面点返回露出当前页面 | ||
| onReady | 监听页面初次渲染完成。注意如果渲染速度快,会在页面进入动画完成前触发 | ||
| onHide | 监听页面隐藏 | ||
| onUnload | 监听页面卸载 |
组件生命周期
uni-app 组件支持的生命周期,与vue标准组件的生命周期相同。这里没有页面级的onLoad等生命周期:
| 函数名 | 说明 | 平台差异说明 | 最低版本 |
|---|---|---|---|
| beforeCreate | 在实例初始化之前被调用。详见 | ||
| created | 在实例创建完成后被立即调用。详见 | ||
| beforeMount | 在挂载开始之前被调用。详见 | ||
| mounted | 挂载到实例上去之后调用。详见 注意:此处并不能确定子组件被全部挂载,如果需要子组件完全挂载之后在执行操作可以使用$nextTickVue官方文档 | ||
| beforeUpdate | 数据更新时调用,发生在虚拟 DOM 打补丁之前。详见 | 仅H5平台支持 | |
| updated | 由于数据更改导致的虚拟 DOM 重新渲染和打补丁,在这之后会调用该钩子。详见 | 仅H5平台支持 | |
| beforeDestroy | 实例销毁之前调用。在这一步,实例仍然完全可用。详见 | ||
| destroyed | Vue 实例销毁后调用。调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。详见 |
- 上班摸鱼差不多了,有空、有人看再更新