(4).在页面上使用Store中的成员
home.wxml
<!--pages/home/home.wxml--> <text class="t1">首页</text> <view> {{numA}}+{{numB}}={{sum}} </view> <!-- 利用 Vant组件 并绑定处理事件且传递参数 --> <van-button type="primary" bindtap="btnHandler" data-step="{{1}}">numA+1</van-button> <van-button type="danger" bindtap="btnHandler" data-step="{{-1}}" >numA-1</van-button>
home.js
import { createStoreBindings } from 'mobx-miniprogram-bindings'; import { store } from '../../store/store'; btnHandler(e){ console.log(e) this.updateNum1(e.currentTarget.dataset.step) },
// 1. 导入包和实列对象 import { createStoreBindings } from 'mobx-miniprogram-bindings'; import { store } from '../../store/store'; Page({ /** * 页面的初始数据 */ data: { count:0 }, btnHandler(e){ console.log(e) this.updateNum1(e.currentTarget.dataset.step) }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { // 绑定 this.storeBindings= createStoreBindings(this,{ store, // 1.实列对象 fields:['numA','numB','sum'], // 2. 我们在store.js中定义的属性 actions:['updateNum1','updateNum2'] // 3. 我们在store.js中定义的方法 }) }, /** * 生命周期函数--监听页面卸载 */ onUnload: function () { this.storeBindings.destoryStoreBindings() }, })
(5).将Store 中的成员绑定到组件
我们在组件的 .js页面进行引入。
test.js
// components/test/test.js // 第一步: 映射到本组件中 import { storeBindingsBehavior } from 'mobx-miniprogram-bindings'; // 第二步: 接受映射 import { store } from '../../store/store'; Component({ // 第三步: 通过storeBindingsBehavior来实现自动绑定 behaviors:[storeBindingsBehavior], storeBindings:{ // 第四步: 指定要绑定的数据源Store store, // 第五步: 指定要绑定的字段数据 fields:{ // 格式为: numA->'绑定的数据源名' numA:'numA', //绑定字段的第一种方式 numB:'numB', // 绑定字段的第二种方式 sum:'sum' // 绑定字段的第三种方式 }, // 第六步: 指定绑定的方法 actions:{ updateNum2:'updateNum2' } }, })
(6).在组件中使用Store中的成员
test.wwxml
<!--components/test/test.wxml--> <view> {{numA}}+{{numB}}={{sum}} </view> <!-- 绑定按钮并传递参数 --> <van-button type="primary" bindtap="btnHandler2" data-step="{{1}}">numB+1</van-button> <van-button type="primary" bindtap="btnHandler2" data-step="{{-1}}">numB-1</van-button>
组件的.js
methods: { btnHandler2(e){ this.updateNum2(e.target.dataset.step) } }
(九)、分包
1.分包 -概念
(1).什么是分包
分包指的是把一个完整的小程序项目
,按照需求划分为不同的子包
,在构建时打包成不同的分包,用户在使用时按需进行加载
。
(2).分包的好处
对小程序进行分包的好处主要有以下两点:
- 可以
优化小程序首次启动的下载时间
。 - 在
多团队共同开发
时可以更好的解耦协作
。
(3).分包前项目的构成
分包前,小程序项目中所有的页面
和资源
都被打包到了一起,导致整个项目体积过大
,影响小程序首次启动的下载时间
。
(4).分包后项目的构成
分包后,小程序项目由 1个主包 + 多个分包
组成:
- 主包: 一般只包含项目的
启动页面
或TabBar页面
、以及所有分包都需要用到的一些公共资源
。 - 分包: 只包含和当前分包有关的页面和私有资源。
(5).分包的加载机制
- 在小程序启动时,默认会
下载主包
并启动主包内页面
- tabBar页面需要放到主包中
- 当用户进入分包内某个页面时,
客户端会把对应分包下载下来
,下载完成后再进行展示
- 非 tabBar页面可以按照功能的不同,划分为不同的分包之后,进行按需下载
(6).分包的体积限制
目前,小程序分包的大小有以下两个限制:
- 整个小程序所有分包大小不超过16M (主包+所有分包)
- 单个分包/主包大小不能超过2M
2.分包 - 使用分包
(1).配置方法
- 如何创建分包
app.json
1. 新增一个属性对象 subPackages -> 内嵌有几个对象就是几个分包 2. 必须要写的一个 root属性 -> 用来指向分包的根目录名 3. pages: 用来指向我们生成的文件 -> 有多少个文件,就在这个分包下有多少页面
"subPackages": [ { "root": "pkgA", "pages": [ "pages/cat/cat", "pages/dog/dog" ] }, { "root": "pkgB", "pages": [ "pages/apple/apple" ] } ],
{ "usingComponents": { "van-button": "@vant/weapp/button/index", "my-test1":"/components/test/test" }, "pages":[ "pages/home/home", "pages/message/message", "pages/contact/contact", "pages/info/info" ], "subPackages": [ { "root": "pkgA", "pages": [ "pages/cat/cat" ] } ], "window":{ "backgroundTextStyle":"dark", "navigationBarBackgroundColor": "#2b4b6b", "navigationBarTitleText": "金橘社区", "navigationBarTextStyle":"white", "backgroundColor": "#efefef", "onReachBottomDistance": 100 }, "tabBar": { "list": [ { "pagePath": "pages/home/home", "text": "首页", "iconPath": "images/index.png", "selectedIconPath": "images/index-active.png" }, { "pagePath": "pages/message/message", "text": "信息", "iconPath": "images/mail.png", "selectedIconPath": "images/mail-active.png" }, { "pagePath": "pages/contact/contact", "text": "电话", "iconPath": "images/phone.png", "selectedIconPath": "images/phone-active.png" } ] }, "sitemapLocation": "sitemap.json" }
- 分包的别名
"subPackages": [ { "root": "pkgA", "name": "p1", "pages": [ "pages/cat/cat", "pages/dog/dog" ] }, { "root": "pkgB", "name": "p2", "pages": [ "pages/apple/apple" ] } ],
- 如何查看分包的各自体积
(2).打包原则
- 小程序会按
subpackages
的配置进行分包,subpackages 之外的目录将被打包到主包中 - 主包也可以有自己的 pages(即最外层的 pages 字段)
- tabBar 页面必须在主包内
- 分包之间不能互相嵌套
(3).引用原则
- 主包
无法引用
分包内的私有资源 - 分包 之间
不能相互引用
私有资源 - 分包
可以引用
主包内的公共资源