#应用生命周期
<script>// 应用周期只能在App.vue里监听export default {//初始化完成出发,只触发一次onLaunch: function() {console.log('App Launch')},//从后台进入前台触发onShow: function() {console.log('App Show')},//从前台进入后台触发onHide: function() {console.log('App Hide')},//报错是触发onError: function() {console.log('App Error')},//对nvue页面发送的数据进行监听onUniNViewMessage(e) {console.log(JSON.stringify(e.data))}}</script>
#页面生命周期
<script>export default {onLoad(option) {}, // 监听页面加载,option为上个页面传递的数据,参数类型为ObjectonReady() {}, // 监听页面初次渲染完成onShow() {}, // 监听页面显示。页面每次出现在屏幕上都触发onHide() {}, // 监听页面隐藏onUnload() {}, // 监听页面卸载onResize() {}, // 监听窗口尺寸变化onPullDownRefresh() {}, //监听用户下拉动作,一般用于下拉刷新onReachBottom() {}, //页面滚动到底部的事件(不是scroll-view滚到底),常用于下拉下一页数据onTabItemTap() {}, //点击 tab 时触发,参数为ObjectonShareAppMessage() {}, //用户点击右上角分享onPageScroll() {}, //监听页面滚动,参数为ObjectonNavigationBarButtonTap() {}, //监听原生标题栏按钮点击事件onBackPress() {}, //监听页面返回,返回 event = {from:backbutton、 navigateBack} ,backbutton 表示来源是左上角返回按钮或 android 返回键;navigateBack表示来源是 uni.navigateBackonNavigationBarSearchInputChanged() {}, //监听原生标题栏搜索输入框输入内容变化事件onNavigationBarSearchInputConfirmed() {}, //监听原生标题栏搜索输入框搜索事件,用户点击软键盘上的“搜索”按钮时触发。onNavigationBarSearchInputClicked() {} //监听原生标题栏搜索输入框点击事件}</script>注意:(2)建议使用 uni-app 的 onReady代替 vue 的 mounted。(3)建议使用 uni-app 的 onLoad 代替 vue 的 created。
#页面路由配置及跳转
{"pages": [ //pages数组中第一项表示应用启动页{"path": "pages/index/index","style": {"navigationBarTitleText": "首页", // 导航标题"navigationBarBackgroundColor": "#F8F8F8", // 导航背景颜色"navigationBarTextStyle": "black", // 导航字体颜色"enablePullDownRefresh": true, // 下拉刷新"app-plus": { // App节点配置项"titleNView": {},"animationType": "fade-in","animationDuration": 300},"h5" : {"titleNView" : false, //导航"type" : "default","scrollIndicator" : "none"}}}],"globalStyle": {"navigationBarTextStyle": "black", // 导航字体颜色"navigationBarTitleText": "uni-app", // 导航标题"navigationBarBackgroundColor": "#F8F8F8", // 导航背景颜色"backgroundColor": "#F8F8F8" // 页面背景颜色},"tabBar": {"color": "#333333","borderStyle": "black","backgroundColor": "#FFFFFF","selectedColor": "#333333","list": [{"pagePath": "pages/index/index","iconPath": "","selectedIconPath": "","text": "首页"},{"pagePath": "pages/my/my","iconPath": "","selectedIconPath": "","text": "我的"}]},"globalStyle" : {"navigationBarTextStyle" : "white","navigationBarTitleText" : "名称","navigationBarBackgroundColor" : "#20A0FF","backgroundColor" : "#f4f4f4"// "backgroundColorBottom" : "#f4f4f4",// "backgroundColorTop" : "#f4f4f4"}}
#页面布局
#条件编译
https://uniapp.dcloud.io/platform?id=%e8%b7%a8%e7%ab%af%e5%85%bc%e5%ae%b9
| 条件编译写法 | 说明 |
|---|---|
| #ifdef APP-PLUS 需条件编译的代码 #endif |
仅出现在 5+App 平台下的代码 |
| #ifndef H5 需条件编译的代码 #endif |
除了 H5 平台,其它平台均存在的代码 |
| #ifdef H5 || MP-WEIXIN 需条件编译的代码 #endif |
仅在 H5 平台或微信小程序平台存在的代码 |
%PLATFORM% 可取值如下:
| 值 | 平台 | 参考文档 |
|---|---|---|
| APP-PLUS | 5+App | HTML5+ 规范 |
| APP-PLUS-NVUE | 5+App nvue | Weex 规范 |
| H5 | H5 | |
| MP-WEIXIN | 微信小程序 | 微信小程序 |
| MP-ALIPAY | 支付宝小程序 | 支付宝小程序 |
| MP-BAIDU | 百度小程序 | 百度小程序 |
| MP-TOUTIAO | 头条小程序 | 头条小程序 |
| MP-QQ | QQ小程序 | (目前仅cli版支持) |
| MP | 微信小程序/支付宝小程序/百度小程序/头条小程序/QQ小程序 |
#页面跳转
//在起始页面跳转到test.vue页面并传递参数uni.navigateTo({url: 'test?id=1&name=uniapp'});// 在test.vue页面接受参数export default {onLoad: function (option) { //option为object类型,会序列化上个页面传递的参数console.log(option.id); //打印出上个页面传递的参数。console.log(option.name); //打印出上个页面传递的参数。}}注意:url有长度限制,太长的字符串会传递失败,可使用encodeURIComponent()uni.navigateTo({url: 'test?item' + encodeURIComponent(JSON.stringify(item))});// 在test.vue页面接受参数onLoad: function (option) {const item = JSON.parse(decodeURIComponent(option.item));}//保留当前页面,跳转到应用内的某个页面
uni.redirectTo({url: 'test?id=1'});//关闭当前页面,跳转到应用内的某个页面。
//在起始页面跳转到test.vue页面并传递参数uni.reLaunch({url: 'test?id=1'});// 在test.vue页面接受参数export default {onLoad: function (option) {console.log(option.id);}}//关闭所有页面,打开到应用内的某个页面。
uni.switchTab({url: '/pages/index/index'});//跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面。
uni.navigateBack({delta: 2 //后退的页数,如果大于现有页面数,则返回首页});uni.navigateBack(); // 上一页
#跳转窗口动画
[https://uniapp.dcloud.io/api/router?id=animation](https://uniapp.dcloud.io/api/router?id=animation)
