118.【微信小程序 - 02】(七)

简介: 118.【微信小程序 - 02】
(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).分包的好处

对小程序进行分包的好处主要有以下两点:

  1. 可以优化小程序首次启动的下载时间
  2. 多团队共同开发时可以更好的解耦协作
(3).分包前项目的构成

分包前,小程序项目中所有的页面资源都被打包到了一起,导致整个项目体积过大,影响小程序首次启动的下载时间

(4).分包后项目的构成

分包后,小程序项目由 1个主包 + 多个分包 组成:

  1. 主包: 一般只包含项目的启动页面TabBar页面、以及所有分包都需要用到的一些公共资源
  2. 分包: 只包含和当前分包有关的页面和私有资源。
(5).分包的加载机制
  1. 在小程序启动时,默认会下载主包启动主包内页面
  • tabBar页面需要放到主包中
  1. 当用户进入分包内某个页面时,客户端会把对应分包下载下来,下载完成后再进行展示
  • 非 tabBar页面可以按照功能的不同,划分为不同的分包之后,进行按需下载
(6).分包的体积限制

目前,小程序分包的大小有以下两个限制:

  • 整个小程序所有分包大小不超过16M (主包+所有分包)
  • 单个分包/主包大小不能超过2M

2.分包 - 使用分包

(1).配置方法

  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"
}

  1. 分包的别名
"subPackages": [
    {
      "root": "pkgA",
      "name": "p1",
      "pages": [
        "pages/cat/cat",
        "pages/dog/dog"
      ]
    },
    {
      "root": "pkgB",
      "name": "p2",
      "pages": [
        "pages/apple/apple"
      ]
    }
  ],

  1. 如何查看分包的各自体积

(2).打包原则
  1. 小程序会按 subpackages的配置进行分包,subpackages 之外的目录将被打包到主包中
  2. 主包也可以有自己的 pages(即最外层的 pages 字段)
  3. tabBar 页面必须在主包内
  4. 分包之间不能互相嵌套
(3).引用原则
  1. 主包 无法引用 分包内的私有资源
  2. 分包 之间不能相互引用私有资源
  3. 分包 可以引用 主包内的公共资源



相关文章
|
1月前
|
存储 缓存 开发框架
提高微信小程序的应用速度
【10月更文挑战第21天】提高微信小程序的应用速度需要从多个方面入手,综合运用各种优化手段。通过不断地优化和改进,能够显著提升小程序的性能,为用户带来更流畅、更高效的使用体验。
58 3
|
3月前
|
小程序
浅谈提高微信小程序的应用速度
浅谈提高微信小程序的应用速度
|
4月前
|
小程序
微信小程序——
微信小程序——
34 1
|
7月前
|
存储 小程序 开发者
如何提升微信小程序的应用速度
如何提升微信小程序的应用速度
|
存储 小程序
微信小程序-touches和changedTouches
在经过上一篇文章的介绍,已经清楚的了解了data与mark的区别,本章将要介绍的也是事件对象当中的两个属性,分别是,touches与changedTouches。
157 0
|
7月前
|
JSON 小程序 编译器
微信小程序3
微信小程序3
83 0
|
7月前
|
JSON JavaScript 小程序
微信小程序4
微信小程序4
78 0
|
小程序
118.【微信小程序 - 02】(九)
118.【微信小程序 - 02】
79 0
|
小程序
117.【微信小程序 - 01】(十)
117.【微信小程序 - 01】
66 0
|
小程序 API
117.【微信小程序 - 01】(九)
117.【微信小程序 - 01】
82 0
下一篇
DataWorks