uni-app01

1.uni-app介绍

        1.1 诞生背景

                1.1.1 多端泛滥

                1.1.2 体验不好

                1.1.3 生态不够丰富

        1.2 uni-app 是什么?

                一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉/淘宝)、快应用等多个平台

2.uni-app的生命周期

uni-app的生命周期函数

函数名

说明

onLaunch

当uni-app 初始化完成时触发(全局只触发一次)

onShow

当 uni-app 启动,或从后台进入前台显示

onHide

当 uni-app 从前台进入后台

onError

当 uni-app 报错时触发

onUniNViewMessage

对 nvue 页面发送的数据进行监听,可参考 nvue 向 vue 通讯

onUnhandledRejection

对未处理的 Promise 拒绝事件监听函数(2.8.1+)

onPageNotFound

页面不存在监听函数

onThemeChange

监听系统主题变化

uni-app页面的生命周期函数:

函数名

说明

onInit

监听页面初始化,其参数同 onLoad 参数,为上个页面传递的数据,参数类型为 Object(用于页面传参),触发时机早于 onLoad

onLoad

监听页面加载,其参数为上个页面传递的数据,参数类型为 Object(用于页面传参),参考示例

onShow

监听页面显示。页面每次出现在屏幕上都触发,包括从下级页面点返回露出当前页面

onReady

监听页面初次渲染完成。注意如果渲染速度快,会在页面进入动画完成前触发

onHide

监听页面隐藏

onUnload

监听页面卸载

onResize

监听窗口尺寸变化

onPullDownRefresh

监听用户下拉动作,一般用于下拉刷新,参考示例

onReachBottom

页面滚动到底部的事件(不是scroll-view滚到底),常用于下拉下一页数据。具体见下方注意事项

onTabItemTap

点击 tab 时触发,参数为Object,具体见下方注意事项

onShareAppMessage

用户点击右上角分享

onPageScroll

监听页面滚动,参数为Object

onNavigationBarButtonTap

监听原生标题栏按钮点击事件,参数为Object

onBackPress

监听页面返回,返回 event = {from:backbutton、 navigateBack} ,backbutton 表示来源是左上角返回按钮或 android 返回键;navigateBack表示来源是 uni.navigateBack ;详细说明及使用:onBackPress 详解。支付宝小程序只有真机能触发,只能监听非navigateBack引起的返回,不可阻止默认行为。

onNavigationBarSearchInputChanged

监听原生标题栏搜索输入框输入内容变化事件

onNavigationBarSearchInputConfirmed

监听原生标题栏搜索输入框搜索事件,用户点击软键盘上的“搜索”按钮时触发。

onNavigationBarSearchInputClicked

监听原生标题栏搜索输入框点击事件

onShareTimeline

监听用户点击右上角转发到朋友圈

onAddToFavorites

监听用户点击右上角收藏

uni-app组件的生命周期:与vue标准组件的生命周期相同

函数名

说明

beforeCreate

在实例初始化之后被调用。详见

created

在实例创建完成后被立即调用。详见

beforeMount

在挂载开始之前被调用。详见

mounted

挂载到实例上去之后调用。详见 注意:此处并不能确定子组件被全部挂载,如果需要子组件完全挂载之后在执行操作可以使用$nextTickVue官方文档

beforeUpdate

数据更新时调用,发生在虚拟 DOM 打补丁之前。详见

updated

由于数据更改导致的虚拟 DOM 重新渲染和打补丁,在这之后会调用该钩子。详见

beforeDestroy

实例销毁之前调用。在这一步,实例仍然完全可用。详见

destroyed

Vue 实例销毁后调用。调用后,Vue 实例指示的所有东西都会解绑定,所有的事件监听器会被移除,所有的子实例也会被销毁。详见

3.组件间的通讯

        父子组件传值与vue中一致,此处不再赘述

        3.1 事件总线

                事件总线可以作为组件沟通桥梁,就像是所有组件共用相同的事件中心,可以向该中心注册发送事件或接收事件,所以组件都可以上下平行地通知其他组件,但也就是太方便所以若使用不慎,就会造成难以维护的灾难,因此才需要更完善的Vuex作为状态管理中心,将通知的概念上升到共享状态层次。

                事件总线的优缺点

                        1.优点:uni支持事件总线,直接使用api就可以,非常灵活

                        2.缺点:代码不容易维护

        3.2 触发事件 uni.$emit(eventName,OBJECT)    //一般在methods中    

        3.3 监听事件 uni.$on(eventName,callback)    //一般在created中

//代码示例
uni.$on('update',function(data){
    console.log('监听到事件来自 update ,携带参数 msg 为:' + data.msg);
})

        3.4 只监听一次 uni.$once(eventName,callback)

                监听全局的自定义事件。事件可以由 uni.$emit 触发,但是只触发一次,在第一次触发之后移除监听器。

//代码示例  
uni.$once('update',function(data){
        console.log('监听到事件来自 update ,携带参数 msg 为:' + data.msg);
    })

        3.5 移除监听 uni.$off(eventName,callback)   //一般在beforeDestory中

                一般用在beforeDestory的声明周期中

注意事项

  • 如果没有提供参数,则移除所有的事件监听器;
  • 如果只提供了事件,则移除该事件所有的监听器;
  • 如果同时提供了事件与回调,则只移除这个回调的监听器;

提供的回调必须跟$on的回调为同一个才能移除这个回调的监听器;

4.条件注释的跨端兼容

        4.1 写法

 #ifdef  #ifndef  %PLATFORM% 开头,以 #endif 结尾。

  • #ifdef:if defined 仅在某平台存在
  • #ifndef:if not defined 除了某平台均存在
  • %PLATFORM%:平台名称

条件编译写法

说明

#ifdef APP-PLUS
需条件编译的代码
#endif

仅出现在 App 平台下的代码

#ifndef H5
需条件编译的代码
#endif

除了 H5 平台,其它平台均存在的代码

#ifdef H5 || MP-WEIXIN
需条件编译的代码
#endif

在 H5 平台或微信小程序平台存在的代码(这里只有||,不可能出现&&,因为没有交集)

        4.2 %PLATFORM% 可取值如下:

平台

APP-PLUS

App

APP-PLUS-NVUE或APP-NVUE

App nvue

H5

H5

MP-WEIXIN

微信小程序

MP-ALIPAY

支付宝小程序

MP-BAIDU

百度小程序

MP-TOUTIAO

字节跳动小程序

MP-QQ

QQ小程序

MP-360

360小程序

MP

微信小程序/支付宝小程序/百度小程序/字节跳动小程序/QQ小程序/360小程序

QUICKAPP-WEBVIEW

快应用通用(包含联盟、华为)

QUICKAPP-WEBVIEW-UNION

快应用联盟

QUICKAPP-WEBVIEW-HUAWEI

快应用华为

        4.3 组件的条件注释

//代码示例:仅在微信中出现


	
	微信公众号关注组件
		
	
//以下代码不会在H5平台出现
// #ifndef H5
console.log("123")
uni.scanCode({
	success() {
	console.log("123")
	}
	})
	// #endif

5.导航跳转

        5.1 利用navagator跳转(类似html中的a标签)

  • 如果想实现web外链跳转,可参考uLink组件

属性名

类型

默认值

说明

平台差异说明

url

String

应用内的跳转链接,值为相对路径或绝对路径,如:"../first/first","/pages/first/first",注意不能加 .vue 后缀

open-type

String

navigate

跳转方式

delta

Number

当 open-type 为 'navigateBack' 时有效,表示回退的层数

animation-type

String

pop-in/out

当 open-type 为 navigate、navigateBack 时有效,窗口的显示/关闭动画效果,详见:窗口动画

App

animation-duration

Number

300

当 open-type 为 navigate、navigateBack 时有效,窗口显示/关闭动画的持续时间。

App

hover-class

String

navigator-hover

指定点击时的样式类,当hover-class="none"时,没有点击态效果

hover-stop-propagation

Boolean

false

指定是否阻止本节点的祖先节点出现点击态

微信小程序

hover-start-time

Number

50

按住后多久出现点击态,单位毫秒

hover-stay-time

Number

600

手指松开后点击态保留时间,单位毫秒

target

String

self

在哪个小程序目标上发生跳转,默认当前小程序,值域self/miniProgram

微信2.0.7+、百度2.5.2+、QQ

        5.2 open-type有效值

说明

平台差异说明

navigate

对应 uni.navigateTo 的功能

redirect

对应 uni.redirectTo 的功能

switchTab

对应 uni.switchTab 的功能

reLaunch

对应 uni.reLaunch 的功能

字节跳动小程序不支持

navigateBack

对应 uni.navigateBack 的功能

exit

退出小程序,target="miniProgram"时生效

微信2.1.0+、百度2.5.2+、QQ1.4.7+

        5.3 编程式跳转(和微信小程序类似)

                uni.navigateTo:跳转到指定界面。

                uni. redirectTo:关闭当前页面,跳转到应用内的某个页面。

                uni.reLaunch:关闭所有界面打卡应用内的某个界面。

                uni.switchTab:切换到tabbar界面。

                uni.navigateBack:返回到指定界面。

        5.4 跳转传参(和微信小程序类似)

                路由跳转的时候可以通过?拼接参数。

界面跳转传参

                获取路由参数,在界面的onLoad方法中获取

onLoad(options) {
console.log(options)
},

你可能感兴趣的:(uni-app)