uni-app工程目录结构
uniCloud: //云空间目录
components: //符合vue组件规范的uni-app组件目录
hybrid: //App端存放本地html文件的目录
platforms: //存放各平台专用页面的目录
pages: //业务页面文件存放的目录
static: //存放应用引用的本地静态资源
uni_modules: //存放[uni_module](/uni_modules)规范的插件
wxcomponents: //存放小程序组件的目录
main.js: //vue初始化入口文件
App.vue: //应用配置,用来配置App全局样式以及监听
manifest.json: //配置应用名称、appid、logo、版本等打包信息
pages.json: //配置页面路由、导航条、选项卡等页面类信息
HbuilderX1.9.0+支持在根目录创建ext.json、sitemap.json等小程序需要的文件。
有效目录:
app-plus : //App
h5: //H5
mp-weixin: //微信小程序
mp-alipay: //支付宝小程序
mp-baidu: //百度小程序
应用生命周期:
应用生命周期仅可在App.vue中监听,在其他页面监听无效。
onLaunch: //当uni-app初始化完成时触发(全局只触发一次)
onShow: //当uni-app启动,或从后台进入前台显示
onHide: //当un-app从前台进入后台
onError: //当uni-app报错时触发
onUniNViewMessage: //对nvue页面发送的数据进行监听
onUnhandledRejection: //对未处理的Promise拒绝时间监听函数(2.8.1+)
onPageNotFound: //页面不存在监听函数
onThemeChange: //监听系统主题变化
示例代码
<script>
// 只能在App.vue里监听应用的生命周期
export default {
onLaunch: function() {
console.log('App Launch')
},
onShow: function() {
console.log('App Show')
},
onHide: function() {
console.log('App Hide')
}
}
</script>
页面生命周期:
onInit: //监听页面初始化,其参数通onLoad参数,为上个页面传递的数据,参数类型为Object(用于页面传参),触发时机早于onLoad
//(仅百度小程序3.260以上支持onInit生命周期,其他平台可使用onLoad,不依赖页面传参的,可以使用created生命周期替代)
onLoad: //监听页面加载,其参数为上个页面传递的数据,参数类型为Object(用于页面传参),示例:https://uniapp.dcloud.io/api/router?id=navigateto
onShow: //监听页面显示,页面每次出现在屏幕行都触发,包括从夏季页面点返回露出当前页面
onReady: //监听页面初次渲染完成。注意如果渲染速度快,会在页面进入动画完成前触发
onHide: //监听页面隐藏
onUnload: //监听页面卸载
onResize: //监听窗口尺寸变化
onPullDownRefresh: //监听用户下拉动作,一般用于下拉刷新,示例:https://uniapp.dcloud.io/api/ui/pulldown
onReachBottom: //页面滚动到底部的时间(不是scroll-view滚到底),常用于下拉下一页数据。
//(可在pages.json定义具体页面底部的触发距离onReachBottomDistance,比如设置为50,如使用scroll-view导致页面没有滚动,则触底事件不会触发)
onTabItemTap: //点击tab时触发,参数为Object
//返回的json对象说明:
//index String 被点击tabItem的序号,从0开始
//patePath String 被点击tabItem的页面路径
//text String 被点击tabItem的按钮文字
//注意:
//onTabItemTap常用于点击当前tabitem,滚动或刷新当前页面。如果是点击不同的tabitem,一定会触发页面切换。
//如果想在App端实现点击某个tabitem不跳转页面,不能使用onTabItemTap,可以使用plus.nativeObj.view放一个区块盖住原先的tabitem,并拦截点击事件
onShareAppMessage: //用户点击右上角分享
onPageScroll: //监听页面滚动,参数为Object(nvue暂不支持)
//参数说明:scrollTop Number 页面在垂直方向移动滚的距离(单位px)
//注意不要写交互复杂的js,会造成卡顿。
//在App,微信小程序,H5中,也可以使用wxs监听滚动
onNavigationBarButtonTap: //监听原生标题栏按钮点击事件,参数为Object
参数说明://index Number 原生标题栏按钮数组的下表
onBackPress: //监听页面返回,返回event={from:backbutton、navigateBack}
//不可使用async,会导致无法组织默认返回
//回调参数对象说明:from String 触发返回行为的来源:
//backbutton--左上角导航栏按钮及安卓返回键
//navigateBack--uni.navigateBack()方法
onNavigationBarSearchInputChanged: //监听原生标题栏搜索输入框输入内容变化事件
onNavigationBarSearchInputConfirmed: //监听原生标题栏搜索输入框搜索事件,用户点击软键盘上的搜索按钮时触发
onNavigationBarSearchInputClicked: //监听原生标题栏搜索输入框点击事件
onShareTimeline: //监听用户点击右上角转发到朋友圈
onAddToFavorites: //监听用户点击右上角收藏
组件生命周期:
uni-app组件支持的生命周期,与vue标准组件的生命周期相同
vue2.x
beforeCreate: //在实例初始化之后被调用
created: //在实例创建完成后被立即调用
beforeMount: //在挂载开始之前被调用
mounted: //挂载到实例上去之后调用
//注意:此处并不能确定子组件被全部挂载,如果需要子组件完全挂载之后再执行操作可以使用$nextTick
beforeUpdate: //数据更新时调用,发生在虚拟DOM打补丁之前
update: //由于数据更改导致的虚拟DOM重新渲染和打补丁,在这之后会调用该钩子
beforeDestroy: //实例销毁之前调用。在这一步,实例仍然完全可用。
destroyed: //Vue实例销毁后调用,调用后,Vue实例只是的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁