这是我参与更文挑战的第4天,活动详情查看:更文挑战
1、vue在uniapp使用有多少差异
uni-app 在发布到H5时支持所有vue的语法;发布到App和小程序时,由于平台限制,无法实现全部vue语法,但 uni-app 仍是是对vue语法支持度最高的跨端框架。 相比Web平台, Vue.js 在 uni-app 中使用差异主要集中在两个方面:
- 新增:uni-app 除了支持Vue实例的生命周期,还支持应用生命周期以及页面生命周期。
- 受限:相比web平台,在小程序和App端部分功能受限。
- uni-app 完整支持 Vue 模板语法。
- App端可以使用更多的vue特性。(主要做的都app项目,小程序要自己踩坑啦。app使用vue很友好)。
2、应用生命周期
| 函数名 | 说明 |
|---|---|
| onLaunch | 当uni-app 初始化完成时触发(全局只触发一次) |
| onShow | 当 uni-app 启动,或从后台进入前台显示(多次触发) |
| onHide | 当 uni-app 从前台进入后台(多次触发) |
| onError | 当 uni-app 报错时触发 |
| onUniNViewMessage | 对 nvue 页面发送的数据进行监听,可参考 nvue 向 vue 通讯 |
| onUnhandledRejection | 对未处理的 Promise 拒绝事件监听函数(2.8.1+) |
| onPageNotFound | 页面不存在监听函数 |
| onThemeChange | 监听系统主题变化 |
3、页面生命周期
| 函数名 | 说明 | 平台差异说明 |
|---|---|---|
| onLoad | 监听页面加载,参数为上个页面传递的参数,参数类型为对象(触发一次) | |
| onShow | 监听页面显示。页面每次出现在屏幕上都触发,包括从下级页面点返回露出当前页面(多次触发) | |
| onReady | 监听页面初次渲染完成。注意如果渲染速度快,会在页面进入动画完成前触发 | |
| onHide | 监听页面隐藏(多次触发) | |
| onUnload | 监听页面卸载 | |
| onResize | 监听窗口尺寸变化 | App、微信小程序 |
| onPullDownRefresh | 监听用户下拉动作,一般用于下拉刷新 | |
| onReachBottom | 页面滚动到底部的事件(不是scroll-view滚到底),常用于下拉下一页数据 | |
| onTabItemTap | 点击 tab 时触发,参数为Object | 微信小程序、支付宝小程序、百度小程序、H5、App(自定义组件模式) |
| onShareAppMessage | 用户点击右上角分享 | 微信小程序、百度小程序、字节跳动小程序、支付宝小程序 |
| onPageScroll | 监听页面滚动,参数为Object | nvue暂不支持 |
| onNavigationBarButtonTap | 监听原生标题栏按钮点击事件,参数为Object | App、H5 |
| onBackPress | 监听页面返回,返回 event = {from:backbutton、 navigateBack} ,backbutton 表示来源是左上角返回按钮或 android 返回键;navigateBack表示来源是 uni.navigateBack ;详细说明及使用:onBackPress 详解。支付宝小程序只有真机能触发,只能监听非navigateBack引起的返回,不可阻止默认行为。 | app、H5、支付宝小程序 |
| onNavigationBarSearchInputChanged | 监听原生标题栏搜索输入框输入内容变化事件 | App、H5 |
| onNavigationBarSearchInputConfirmed | 监听原生标题栏搜索输入框搜索事件,用户点击软键盘上的“搜索”按钮时触发。 | App、H5 |
| onNavigationBarSearchInputClicked | 监听原生标题栏搜索输入框点击事件 | App、H5 |
| onShareTimeline | 监听用户点击右上角转发到朋友圈 | 微信小程序 |
| onAddToFavorites | 监听用户点击右上角收藏 | 微信小程序 |
4、 应用生命周期执行顺序
beforeCreate => onLoad => onShow => created => beforeMount => onReady => mounted