携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第30天,点击查看活动详情
前言
大家好呀,我是L同学。在上篇文章UniAPP笔记(三)中,我们学习了UniAPP的相关知识点,包括路由配置、路由跳转、获取当前页面栈、路由传参与接收、小程序路由分包配置、UniAPP 常用组件等相关知识点。在本篇文章中,我们将继续学习UniAPP的相关知识点,包括UniAPP 常用 API 简介、自定义组件、父子组件通信、slot 数据分发与作用域插槽、全局事件定义及通信等相关知识点。
UniAPP 常用 API 简介
uni-app的 js 代码,h5 端运行于浏览器中,非 h5 端 Android 平台运行在 v8 引擎中,iOS 平台运行在 iOS 自带的 jscore 引擎中。所以,uni-app的 jsAPI 由标准 ECMAScript 的 js API 和 uni 扩展 API 这两部分组成。
ECMAScript 由 Ecma 国际管理,是基础 js 语法。浏览器基于标准 js 扩充了window、document 等 js API;Node.js 基于标准 js 扩充了 fs 等模块;小程序也基于标准 js 扩展了各种 wx.xx、my.xx、swan.xx 的 API。标准 ecmascript 的 API 非常多,比如:console、settimeout等等。非 H5 端,虽然不支持 window、document、navigator 等浏览器的 js API,但也支持标准 ECMAScript。所以 uni-app 的非 H5 端,一样支持标准 js,支持 if、for 等语法,支持字符串、数组、时间等变量及各种处理方法,仅仅是不支持浏览器专用对象。
自定义组件
组件是 vue 技术中非常重要的部分,组件使得与ui相关的轮子可以方便的制造和共享,进而使得vue使用者的开发效率大幅提升,在项目的component目录下存放组件,uni-app 只支持 vue 单文件组件(.vue 组件)。
组件可以使用「全局注册」和「页面引入」两种方式进行使用,使用分为三步:
- 导入
import xxx from 'xxx' - 注册
Vue.use('xx',xx)components:{ xxx } - 使用
<xx />
父子组件通信
父组件通过自定义属性向子组件传递数据。子组件通过 props 接收父组件传递的数据。父组件通过自定义事件标签向子组件传递事件。子组件通过触发父组件定义事件方式修改父组件数据。
slot 数据分发与作用域插槽
父组件通过调用子组件内部嵌套 html 内容作为slot分发给子组件。子组件通过在 slot 标签上添加属性,向父组件通信数据,作用域插槽
全局事件定义及通信
在整个应用的任何地方均可以使用uni.$on创建一个全局事件。在整个应用的任何地方也均可以使用 uni.$emit 来触发全局事件,实现多组件件的数据通信。