| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> 微信小程序 - 进阶(自定义组件、promis化、mobx、分包、自定义tabBar) -> 正文阅读 |
|
[移动开发]微信小程序 - 进阶(自定义组件、promis化、mobx、分包、自定义tabBar) |
文章目录一、自定义组件参考:自定义组件 1、创建组件1、在根目录新建文件夹 components ,然后在 components 文件夹下新建组件文件夹 test ;在 test 文件夹右键点击新建Component,输入组件名称 test 之后会生成对应的 4 个文件:test.js、test.json、test.wxml、test.wxss; 2、引用组件1、全局引用:在 app.json 全局配置文件中引入组件,在 window 同级新增下面配置
2、局部引用:在页面的 .json 文件中引入组件
使用:在页面 wxml 文件中直接使用
3、组件和页面区别1、组件的 .json 文件中需要声明 “component”: true; 4、组件样式1、组件样式隔离:组件之间的样式互不影响,组件和页面的样式也是相对独立的;这也可以防止组件和页面之间样式污染; 注意:
2、修改样式隔离选项
或者在组件的 .json 文件中配置
5、data、methods、properties1、data:组件的私有数据;
获取 properties 传递的数据可以直接 6、小程序的 data 和 properties 区别跟 vue 的不同,小程序的 data 和 properties 都是可读可写的;在组件里面可以对 properties 传递进来的对象重新赋值,这一点和 vue 里面的 props 是不一样的; data 和 properties的侧重点不一样:data 侧重组件私有数据,properties 侧重外界传递的数据; data 和 properties 在本质上是一样的东西,只是认为的区分了他们的功能;所以对于 properties 的操作很操作 data 的方式是一样的(读取、修改); 7、数据监听器(observers )数据监听器用于监听和响应属性和数据的变化,从而执行特定的操作;类似 vue 里面的 watch ;小程序的语法如下:
2、observers 还可以监听对象的属性值
3、监听对象中所以属性的变化,可以使用通配符 “**”
只要 obj 里面的属性发生变化就会触发监听; 8、纯数据字段(pureDataPattern)纯数字字段:指的是那些不用于界面渲染的 data 数据,也不会传递给其他组件,仅在当前组件内部使用; 好处:有助于提升页面更新的性能; 1、设置纯数据字段
9、组件的生命周期(lifetimes)1、小程序很神奇,它的组件生命周期跟页面生命周期(onLoad、onReady、onShow、onHide、onUnload)和应用生命周期(onLaunch、onShow、onHide)完全不一样:
2、定义生命周期函数:将生命周期函数定义在 lifetimes(最新-建议) 字段内
10、组件所在页面生命周期(pageLifetimes )1、由于组件的某些行为会依赖页面的状态变化,所有需要在组件的 js 文件中监听页面的变化,这种可以被组件访问的生命周期就是 组件所在页面的生命周期;
2、定义生命周期:必须定义在 pageLifetimes 节点中;
11、插槽1、单个插槽:跟 vue 里面插槽差不多,也是占位符的作用;小程序中默认每个自定义组件只能使用一个插槽
2、启用多个插槽:小程序中如果想使用多个插槽,需要在组件中进行配置
多个插槽需要给 slot 定义一个 name 来区分
12、父子组件数据传递(properties 、triggerEvent())1、属性绑定 子组件在 properties 节点上声明对应的属性并使用:
子组件可以对 properties 的属性值进行修改,但是不会直接传递给父组件,如果想传递给父组件就需要用到下面的方法: 2、事件绑定 父组件 js 文件中定义事件,并在 wxml 文件中绑定事件,子组件调用 this.triggerEvent(事件名,参数) 函数将数据发送给父组件,然后父组件中通过 e.detail 获取到数据:
这个流程跟 vue 的子组件传值给父组件其实是差不多的; 3、获取组件实例
这样就可以在父组件里面访问子组件的数据、调用子组件的方法(也可以调用子组件的 setData 方法来修改数据); 13、behaviors(混入)是小程序中用于实现代码共享的一个方式,类似于 vue 中的 mixins ;每个 behaviors 都有自己的属性、数据、生命周期函数、方法,组件引用它的时候这些属性、数据、方法会被合并到组件中; 每个组件都有可以引入多个 behaviors,behaviors之间也可以相互引用;
2、导入和使用
3、behaviors 与组件优先级
properties 、methods:
生命周期:生命周期函数不会相互覆盖,而是在对应触发时机被逐个调用
优先级规则参考:同名字段的覆盖和组合规则 二、使用 npm 包小程序支持使用 npm 第三方安装包,来提升小程序的开发效率,但是小程序中使用 npm 有一些限制:
1、Vant Weapp这是一套开源的小程序组件 ui 库,使用的是 MIT 开源协议,对于商业使用比较友好;官网地址:https://vant-contrib.gitee.io/vant-weapp/#/home 可参考官网的快速上手 2、构建 npm(没有安装依赖都需要重新构建) 小程序无法时候 node_module 这个文件里面的内容,所以需要构建成一个 miniprogram_npm 文件,并且每次构建都需要删除这个miniprogram_npm 文件; 3、修改 app.js 4、使用 Vant 2、css变量定制样式1、在根节点的内部定义一个 css 变量,然后在使用的时候借助 var 来引用;
需要注意的是,定义的变量必须 “–” 开头,它也是有作用域范围的,定义在那个区域下,就只能在这个区域里引用才会生效; 2、css 变量定制Vant 主题
三、小程序 API 的 Promise 化1、为什么要 Pronise 化小程序中官方提供的异步 API 都是基于回调函数实现的,这样很容易导致回调地狱,代码的可读性、维护性都很低; 2、实现 Promise 化1、主要依赖 miniprogram-api-promise 这个第三方 npm 包
2、在入口文件(app.js)需要调用一次 promisifyAll() 方法
这里 wxp 存放的就是 Promise 化之后的小程序 API,在使用的时候就可以直接使用 wx.p 来调用 Promise 化的 API 了; 3、调用 Promise 化的 API
四、全局数据共享(mobx-miniprogram、mobx-miniprogram-bindings )1、什么是全局数据共享也可叫状态管理,解决小程序组件之间数据共享问题;常见的数据共享有:Vuex、Redux、Mobx 1、小程序中可以使用 mobx-miniprogram 配合 mobx-miniprogram-bindings 实现全局数据共享
2、安装 mobx 相关包
安装完成之后重新构建 npm; 2、创建 Store 实例对象根目录创建文件夹 store,在文件夹里创建一个 store.js 文件;
1、get 定义计算属性:只需要定义一个方法,然后以 get 开头,表明这个计算属性是只读的; 3、在页面中使用 Store(createStoreBindings )引入 store 和 createStoreBindings ,在 onLoad 自定义一个对象 storeBindings 调用 createStoreBindings 方法将 store、fields(字段、计算属性)、actions(方法)绑定到 this (当前页面) 上;在 onUnload 里面调用自定义对象 storeBindings 提供的销毁方法 destoryStoreBindings;
在页面中可以直接通过花括号 {{}} 使用绑定后的 store 字段;
4、在组件中使用(storeBindingsBehavior)引入 store 和 storeBindingsBehavior,提供behaviors 数组将进入的 storeBindingsBehavior 绑定;
五、分包(subpackages )把完整的小程序项目按需求划分为不同的模块,在构建中打包成不同的子包,用户在使用时可以按需加载;这样的好处是:
1、分包后规则1、项目构造 2、加载规则 3、大小限制 2、分包基本用法在 app.json 文件中通过 subpackages 来声明分包,声明之后会自动创建相应的文件:
root 声明这个分包的名称,name 是分包的别名,pages 是分包里面的页面;生成文件如下: 3、打包原则1、小程序会按 subpackages 的配置进行分包, subpackages 以外的目录将会打包到主包中; 4、引用原则1、主包内资源可以被分包引用; 5、独立分包(independent)本质上也是分包,但是它比较特殊,可以独立于主包和其他分包而单独运行; 默认情况下,用户打开小程序只能从主包进入,然后再去访问分包;独立分包则是用户可以跳过主包,直接进入分包中;一个小程序可以有多个独立分包; 1、定义独立分包
注意:独立分包里面不能引用主包里面的资源; 6、分包预下载(preloadRule)在进入主页面的时候会触发分包进行预下载行为,这样是为了提升分包的启动速度;在 app.json 里面,使用 preLoadRule 节点定义分包的预下载规则;
注意:同一个分包(主包)中的页面享有共同的预下载大小限额 2M,限额会在工具中打包时校验 六、自定义 tabBar可参考:https://developers.weixin.qq.com/miniprogram/dev/framework/ability/custom-tabbar.html 1、配置1、在 app.json 中的 tabBar 项指定 custom 字段,同时其余 tabBar 相关配置(list)也补充完整,保证低版本的兼容; 如果没有使用组件库,可以参考小程序官网自定义 tabBar 最后面的一个链接,可以直接打开一个小程序项目; |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 20:00:27- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |