iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >微信小程序--》小程序—全局数据共享和分包
  • 363
分享到

微信小程序--》小程序—全局数据共享和分包

微信小程序小程序开发语言前端 2023-09-13 18:09:38 363人浏览 安东尼
摘要

🏍️作者简介:大家好,我是亦世凡华、渴望知识储备自己的一名在校大学生 🛵个人主页:亦世凡华、 🛺系列专栏:微信小程序 🚲座右铭:人生亦可燃烧,亦可腐败,我愿燃烧,耗尽

🏍️作者简介:大家好,我是亦世凡华、渴望知识储备自己的一名在校大学生

🛵个人主页:亦世凡华、

🛺系列专栏:微信小程序

🚲座右铭:人生亦可燃烧,亦可腐败,我愿燃烧,耗尽所有光芒。

👀引言

       ⚓经过WEB前端开发学习,相信大家对于前端开发有了一定深入的了解,今天我开设了微信小程序专栏,主要想从移动端开发方向进一步发展,而对于我来说写移动端博文的第一站就是小程序开发,希望看到我文章的朋友能对你有所帮助。

目录

🙈全局数据共享

安装 MobX 相关的包

创建Store实例

将 Store 中的成员绑定到页面中

在页面使用 Store 中的成员

将 Store 成员绑定到组件中

在组件中使用 Store 中的成员

🙉分包

分包的项目构成:

分包的加载规则:

分包的体积限制:

创建分包

打包原则

分包的引用原则

独立分包

独立分包的引用原则

分包预下载


🙈全局数据共享

全局数据共享(状态管理)是为了解决组件之间数据共享的问题,开发中常用的全局数据共享方案有:Vuex、Redux、MobX等。

在小程序中,可用 mobx-miniprogram (用来创建 Store 实例对象) 配合 mobx-miniprogram-bindings (用来把 Store 中的共享数据或方法,绑定到组件和页面中使用)实现全局数据共享。

安装 MobX 相关的包

项目中运行如下命令,安装 MobX相关的包:(注意要启用管理员权限) 安装完成重新构建 npm

npm install --save mobx-miniprogram@4.13.2 mobx-miniprogram-bindings@1.2.1

创建Store实例

// 创建store文件夹下的store.js文件,在这个 JS 文件中,专门来创建 Store 的实例对象import {observable,action} from 'mobx-miniprogram'export const store = observable({  // 数据字段  numA:1,  numB:2,  // 计算属性  get sum(){    return this.numA + this.numB  },  // actions 函数,专门来修改 store 中数据的值  updateNum1:action(function(step){    this.numA += step  }),  updateNum2:action(function(step){    this.numB += step  }),})

将 Store 中的成员绑定到页面中

// 路径需要相对路径,不然会报错import {createStoreBindings} from '../../miniprogram/miniprogram_npm/mobx-miniprogram-bindings/index'import {store} from '../../store/store'Page({  //生命周期函数--监听页面加载  onLoad(options) {    this.storeBindings = createStoreBindings(this,{      store,      fields:['numA','numB','sum'],      actions:['updateNum1']    })  },  //生命周期函数--监听页面卸载  onUnload() {    this.storeBindings.detroyStoreBindings()  },})

在页面使用 Store 中的成员

// .wxml文件{{numA}}+{{numB}}={{sum}}numA+1numB-1// .js文件// pages/message/message.jsimport {createStoreBindings} from '../../miniprogram/miniprogram_npm/mobx-miniprogram-bindings/index'import {store} from '../../store/store'Page({  //生命周期函数--监听页面加载  onLoad(options) {    this.storeBindings = createStoreBindings(this,{      store,      fields:['numA','numB','sum'],      actions:['updateNum1']    })  },  //绑定按钮点击事件  btnHander1(e){    // console.log(e);    this.updateNum1(e.target.dataset.step)  },  //生命周期函数--监听页面卸载  onUnload() {    this.storeBindings.detroyStoreBindings()  },})

将 Store 成员绑定到组件中

import {storeBindingsBehavior} from '../../miniprogram/miniprogram_npm/mobx-miniprogram-bindings/index'import {store} from '../../store/store'Page({  behaviors:[storeBindingsBehavior],  storeBindings:{    // 数据源    store, //指定要绑定的store    fields:{//指定要绑定的字段数据      numA:()=>store.numA,     //绑定字段的第一种方式      numB:(store)=>store.numB,//绑定字段的第二种方式      sum:'sum',               //绑定字段的第三种方式    },    actions:{ //指定要绑定的方法      updateNum2:'updateNum2'    }  },})

在组件中使用 Store 中的成员

//组件的 .wxml结构{{numA}}+{{numB}}={{sum}}numB+1numB-1//组件的 .js结构methods: {  btnHander2(e){    this.updateNum2(e.target.dataset.step)  }}

🙉分包

分包指的是把一个完整的小程序项目,按照需求划分为不同的子包,在构建时打包成不同的分包,用户在使用时按需进行加载

分包的好处:可以优化小程序首次启动的下载时间;在多团队共同开发时可以更好的解耦协作

分包的项目构成:

分包前

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

分包后

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

主包:一般只包含项目的 启动页面TabBar 页面、以及所有分包都需要用到的一些公共资源。

分包:只包含和当前分包有关的页面和私有资源。

分包的加载规则:

在小程序启动时,默认会下载主包启动主包内页面

tabBar页面需要放到主包中

当用户进入分包内某个页面时,客户端会把对应分包下载下来,下载完成后在进行展示:

非tabBar页面可以按照功能的不同,划分为不同的分包之后,进行按需下载

分包的体积限制:

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

整个小程序所有分包大小不超过16M(主包+所有分包)

单个分包/主包大小不能超过2M

创建分包

创建分包很简单,只需要在app.JSON文件下,通过 subpackages 进行分包创建,创建之后保存文件,分包的文件就会自动出现在目录中。

{  "pages":[ //主包的所有界面    "pages/home/home",    "pages/message/message",    "pages/contact/contact",    "pages/index/index",    "pages/logs/logs"  ],  "subpackages":[ //通过subpackages节点,声明分包的结构    {      "root": "package", //第一个分包的根目录      "name": "p1"//给分包起个别名用来区分分包      "pages": [//当前分包下,所有页面的相对存放路径        "pages/demoA/demoA",        "pages/demoB/demoB"      ]    },    {      "root": "package2", //第二个分包的根目录      "name": "p2"//给分包起个别名用来区分分包      "pages": [//当前分包下,所有页面的相对存放路径        "pages/demoC/demoC",        "pages/demoD/demoD"      ]    }  ],}

当我们想1知道分包的体积是多少可以通过以下方式查看:

打包原则

小程序会按 subpackages 的配置进行打包,subpackages之外的目录将被打包到主包中

主包也可以有自己的 pages(即最外层的 pages 字段)

tabBar 页面必须在主包内

分包之间不能相互嵌套

分包的引用原则

主包无法引用分包内的私有资源

分包之间不能相互引用私有资源

分包可以引用主包内的公共资源

独立分包

独立分包本质上也是分包,只不过它比较特殊,可以独立于主包和其它分包而单独运行

独立分包和普通分包区别

普通分包必须依赖于主包才能运行

独立分包可以在不下载主包的情况下,独立运行

开发者将某些具有一定功能独立性的页面配置到独立分包中的原因

当小程序从普通的分包页面启动时,需要首先下载主包

而独立分包不依赖主包即可运行,可以很大程度上提升分包页面的启动速度。

注意:一个小程序可以有多个独立的分包

那么我们如何将一个普通的分包改造成独立分包呢?很简单,只需要在分包中添加如下命令即可。

"subpackages":[   {    "root": "package",     "pages": [      "pages/demoA/demoA",      "pages/demoB/demoB"    ],    "independent": true //通过此节点,声明当前“package”分包为“独立分包”  }],

独立分包的引用原则

独立分包和普通分包以及主包之间,是相互隔绝的,不能相互引用彼此的资源!

主包无法引用独立分包内的私有资源

独立分包之间,不能相互引用私有资源

独立分包和普通分包之间,不能相互引用私有资源

注意:独立分包中不能引用主包内的公共资源

分包预下载

在进入小程序的某个页面时,由框架自动预下载可能需要的分包,从而提升进入后续分包页面时的启动速度。

预下载分包的行为,会在进入指定的页面时触发。在app.json中,使用 preloadRule 节点定义分包的预下载规则

{  "preloadRule":{ //分包预下载规则      "pages/contact/contact":{ //触发分包预下载的页面路径        //network 表示在指定的网络模式下进行预下载        //可选值为:all(不限网络)或wifi(仅 wifi 模式下进行预下载)        //默认值为:wifi        "network": "all"        //packages 表示进入页面之后,预下载哪些分包        //可以通过 root 或 name 指定预下载哪些分包        "packages": ["package"],       }  }}

注意:同一个分包中的页面享有共同的预下载大小限额是2M。

来源地址:https://blog.csdn.net/qq_53123067/article/details/126328953

--结束END--

本文标题: 微信小程序--》小程序—全局数据共享和分包

本文链接: https://www.lsjlt.com/news/406295.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 微信小程序--》小程序—全局数据共享和分包
    🏍️作者简介:大家好,我是亦世凡华、渴望知识储备自己的一名在校大学生 🛵个人主页:亦世凡华、 🛺系列专栏:微信小程序 🚲座右铭:人生亦可燃烧,亦可腐败,我愿燃烧,耗尽...
    99+
    2023-09-13
    微信小程序 小程序 开发语言 前端
  • 微信小程序全局数据共享和分包图文详解
    目录引言全局数据共享安装 MobX 相关的包创建Store实例将 Store 中的成员绑定到页面中在页面使用 Store 中的成员将 Store 成员绑定到组件中在组件中使用 Sto...
    99+
    2024-04-02
  • 微信小程序(分包)
    文章目录 分包概念作用分包后的项目构成分包的加载规则分包的体积限制配置方法小程序打包原则引用原则独立分包分包预下载 分包 概念 分包指的是把一个完整的小程序项目,按照需求划分为不同的子包,在构建时打包成不同的分...
    99+
    2023-08-16
    微信小程序 小程序 前端
  • 微信小程序通过uni-app进行全局分享
    实际使用中,经常需要小程序分享到好友或者朋友圈,一般而言是一个个页面去设置。 官网分享介绍:https://uniapp.dcloud.io/api/plugins/share...
    99+
    2024-04-02
  • 【微信小程序】全局配置
    目录 全局配置文件及常用的配置项 全局配置 - window 1. 小程序窗口的组成部分 2. 了解 window 节点常用的配置项  3. 设置导航栏的标题 4. 设置导航栏的背景色  5. 设置导航栏的标题颜色 6. 全局开启下拉刷新功...
    99+
    2023-09-10
    微信小程序 小程序 前端 javascript 开发语言
  • 微信小程序怎么实现数据共享与方法共享
    微信小程序怎么实现数据共享与方法共享,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。全局数据共享 Mobox原生小程序开发中我们可以通过 mobx-miniprogram 配...
    99+
    2023-06-26
  • uniapp微信小程序分包
    目录 一. 分包的概念 1. 什么是分包 2. 分包的好处 3. 分包后项目的构成 4. 分包加载规则 5. 分包体积限制 二. 分包的方法 1. 分包后的目录结构 2. 配置manifest.json 3. 配置pages.json 4....
    99+
    2023-09-10
    微信小程序 uni-app 小程序
  • 微信小程序中怎么使用store数据共享
    这篇文章主要介绍“微信小程序中怎么使用store数据共享”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“微信小程序中怎么使用store数据共享”文章能帮助大家解决问题。全局数据共享 全局数据共享(状态...
    99+
    2023-07-06
  • 微信小程序中如何使用store数据共享
    全局数据共享 全局数据共享(状态管理)是为了解决组件之间数据共享的问题,开发中常用的全局数据共享方案有:Vuex、Redux、MobX等 在小程序中,可用 mobx-miniprog...
    99+
    2023-05-15
    小程序store数据共享 小程序数据共享
  • 【微信小程序】全局配置 - tabBar
    目录 全局配置 - tabBar 1. 什么是 tabBar 2. tabBar 的 6 个组成部分 3. tabBar 节点的配置项 4. 每个 tab 项的配置选项 全局配置 - 案例:配置 tabBar 1. 需求描述 2. 实现步骤...
    99+
    2023-09-03
    微信小程序 开发语言 小程序 javascript
  • 小程序:微信小程序打包成APP
     哈喽大家好 ! 我是小白 本篇将教大家如何一键实现微信小程序打包成APP! 如今的微信小程序发展可谓是如日中天,关于微信小程序和APP谁才是最终的王者的问题一直没有得到一个正式的答案。 2017年1月9日,张小龙在微信公开课上宣布小程序...
    99+
    2023-09-20
    微信小程序 小程序
  • uniapp实现微信小程序全局分享的示例代码
    目录创建全局分享内容文件引入并全局注册该文件自定义页面分享内容 uniapp 实现微信小程序的全局转发给好友/分享到朋友圈的功能。主要使用 Vue.js 的 全局混入 概念。 下面直...
    99+
    2024-04-02
  • 微信小程序如何实现数据共享与方法共享详解
    目录全局数据共享 Moboxnpm安装及其注意事项小程序对 npm 的支持与限制npm 依赖包的安装与使用Mobox组件方法共享 behaviors1. 什么是 behaviors2...
    99+
    2024-04-02
  • 微信小程序解包
    这个也是因为前阵子的某牛活动,自己第一次接触小程序反编译。本文当时写了一半阳了,又处理了点事情,休息好了继续写写 该文章仅供学习交流,请勿用于非法用途,后果自负 一、准备工具 Node.js环境(https://nodejs.or...
    99+
    2023-09-11
    微信小程序 小程序
  • uniapp-微信小程序 分包--详解
    uniapp-微信小程序 分包–详解 实际环境(用business举例,可以创建很多个分包) 先说好,如果代码模块多,就一个一个模块搞(照着做不会错) 直入主题,我代码写完了,一真机运行,g,发现超过...
    99+
    2023-09-03
    微信小程序 uni-app 小程序 前端
  • 微信小程序嵌套的H5使用小程序分享(分享微信好友或朋友圈)
    需求说明 嵌套在微信小程序中的H5想要使用小程序自带分享功能,分享H5的页面给微信好友或朋友圈 实现原理 H5中可使用wx.miniProgram.postMessage向小程序的webview发送消息,会触发组件的message事件,在小...
    99+
    2023-08-21
    小程序 微信小程序 微信
  • 微信小程序开发经验分享
    小编给大家分享一下微信小程序开发经验分享,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一: 参数传值的方法1: data-id我...
    99+
    2024-04-02
  • 共享停车位小程序,微信小程序停车场车位,微信小程序停车场系统毕设作品
        项目背景和意义   目的:首先,在社会上“停车难”是一个众所周知的问题,每个小区,每个大厦都有自己的停车场,但是在没有进入停车场之前,我们没办法知道是否有空车位,空车位在哪个地方。为了解决这个问题我们打算做一个停车场车位预约...
    99+
    2023-10-07
    共享停车位小程序
  • 微信小程序做全局登录弹窗
    需求:在任意需要弹出登录的页面,后台返回需要登录状态码,弹出登录弹窗进行登录,并刷新当前页面 过程:因为微信小程序无法封装一个全局组件通过方法全局调用。因此只能封装一个公共组件,在需要弹窗的页面注册并...
    99+
    2023-10-01
    微信小程序 小程序 微信 前端
  • 微信小程序全局状态是什么
    这篇文章主要讲解了“微信小程序全局状态是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“微信小程序全局状态是什么”吧!前言在微信小程序中,可以利用 App.js 的 globalData ...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作