微信小程序使用npm包、全局数据共享和分包

news2024/12/25 1:28:31

文章目录

    • 导航路线
    • 使用 npm 包
      • 小程序对 npm 的支持与限制
      • Vant Weapp
        • 1. 什么是 Vant Weapp
        • 2. 安装 Vant 组件库
        • 3. 使用 Vant 组件
        • 4. 定制全局主题样式
        • 5. 定制全局主题样式
      • API Promise化
        • 1. 基于回调函数的异步 API 的缺点
        • 2. 什么是 API Promise 化
        • 3. 实现 API Promise 化
        • 4. 调用 Promise 化之后的异步 API
    • 全局数据共享
        • 1. 什么是全局数据共享
        • 2. 小程序中的全局数据共享方案
      • MobX
        • 安装 MobX 相关的包
        • 2. 创建 MobX 的 Store 实例
        • 3. 将 Store 中的成员绑定到页面中
        • 4. 在页面上使用 Store 中的成员
        • 5. 将 Store 中的成员绑定到组件中
        • 6. 在组件中使用 Store 中的成员
    • 分包
      • 基础概念
        • 1. 什么是分包
        • 2. 分包的好处
        • 3. 分包前项目的构成
        • 4. 分包后项目的构成
        • 5. 分包的加载规则
        • 6. 分包的体积限制
      • 使用分包
        • 1. 配置方法
        • 2. 打包原则
        • 3. 引用原则
      • 独立分包
        • 1. 什么是独立分包
        • 2. 独立分包和普通分包的区别
        • 3. 独立分包的应用场景
        • 4. 独立分包的配置方法
        • 5. 引用原则
      • 分包预下载
        • 1. 什么是分包预下载
        • 2. 配置分包的预下载
        • 3. 分包预下载的限制

导航路线

关于微信小程序知识点一共做了六个博客,涵盖大部分内容,有想学习的可以按照以下顺序查看
1.微信小程序的启动和渲染过程(加组件分类和组件的基本使用以及API分类)
2.微信小程序wxml的数据和事件的绑定,以及条件和列表的渲染
3.微信小程序wxss相关介绍、全局配置和tabbar知识以及发送网络数据请求(post,get)
4.微信小程序页面导航、编程式导航、页面事件、生命周期和WXS脚本
5.微信小程序自定义组件、组件的生命周期和组件通信(插槽)
6.微信小程序使用npm包、全局数据共享和分包

使用 npm 包

小程序对 npm 的支持与限制

目前,小程序中已经支持使用 npm 安装第三方包,从而来提高小程序的开发效率。但是,在小程序中使用 npm 包有如下 3 个限制:

  1. 不支持依赖于 Node.js 内置库的包
  2. 不支持依赖于浏览器内置对象的包
  3. 不支持依赖于 C++ 插件的包

总结:虽然 npm 上的包有千千万,但是能供小程序使用的包却“为数不多”。

Vant Weapp

1. 什么是 Vant Weapp

Vant Weapp 是有赞前端团队开源的一套小程序 UI 组件库,助力开发者快速搭建小程序应用。它所使用的是 MIT 开源许可协议,对商业使用比较友好。
官方文档地址 https://youzan.github.io/vant-weapp

扫描下方的小程序二维码,体验组件库示例:
在这里插入图片描述

2. 安装 Vant 组件库

在小程序项目中,安装 Vant 组件库主要分为如下 3 步:

  1. 通过 npm 安装(建议指定版本为@1.3.3)
  2. 构建 npm 包
  3. 修改 app.json

详细的操作步骤,大家可以参考 Vant 官方提供的快速上手教程:
https://youzan.github.io/vant-weapp/#/quickstart#an-zhuang

3. 使用 Vant 组件

安装完 Vant 组件库之后,可以在 app.json 的 usingComponents 节点中引入需要的组件,即可在 wxml 中直接使用组件。示例代码如下:

在这里插入图片描述

4. 定制全局主题样式

Vant Weapp 使用 CSS 变量来实现定制主题。 关于 CSS 变量的基本用法,请参考 MDN 文档:https://developer.mozilla.org/zh-CN/docs/Web/CSS/Using_CSS_custom_properties

5. 定制全局主题样式

在 app.wxss 中,写入 CSS 变量,即可对全局生效:
在这里插入图片描述
所有可用的颜色变量,请参考 Vant 官方提供的配置文件:https://github.com/youzan/vant-weapp/blob/dev/packages/common/style/var.less

API Promise化

1. 基于回调函数的异步 API 的缺点

默认情况下,小程序官方提供的异步 API 都是基于回调函数实现的,例如,网络请求的 API 需要按照如下的方式调用:

缺点:容易造成回调地狱的问题,代码的可读性、维护性差!

2. 什么是 API Promise 化

API Promise化,指的是通过额外的配置,将官方提供的、基于回调函数的异步 API,升级改造为基于 Promise 的异步 API,从而提高代码的可读性、维护性,避免回调地狱的问题。

3. 实现 API Promise 化

在小程序中,实现 API Promise 化主要依赖于 miniprogram-api-promise 这个第三方的 npm 包。它的安装和使用步骤如下:

npm install --save miniprogram-api-promise@1.0.4

在这里插入图片描述

4. 调用 Promise 化之后的异步 API

在这里插入图片描述

全局数据共享

1. 什么是全局数据共享

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

在这里插入图片描述

2. 小程序中的全局数据共享方案

在小程序中,可使用 mobx-miniprogram 配合 mobx-miniprogram-bindings 实现全局数据共享。其中:

  • mobx-miniprogram 用来创建 Store 实例对象
  • mobx-miniprogram-bindings 用来把 Store 中的共享数据或方法,绑定到组件或页面中使用

在这里插入图片描述

MobX

安装 MobX 相关的包

在项目中运行如下的命令,安装 MobX 相关的包:

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

在这里插入图片描述

注意:MobX 相关的包安装完毕之后,记得删除 miniprogram_npm 目录后,重新构建 npm。

2. 创建 MobX 的 Store 实例

在这里插入图片描述

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

在这里插入图片描述

4. 在页面上使用 Store 中的成员

在这里插入图片描述

5. 将 Store 中的成员绑定到组件中

在这里插入图片描述

6. 在组件中使用 Store 中的成员

在这里插入图片描述

分包

基础概念

1. 什么是分包

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

2. 分包的好处

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

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

3. 分包前项目的构成

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

在这里插入图片描述

4. 分包后项目的构成

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

  • 主包:一般只包含项目的启动页面或 TabBar 页面、以及所有分包都需要用到的一些公共资源
  • 分包:只包含和当前分包有关的页面和私有资源
    在这里插入图片描述

5. 分包的加载规则

  1. 在小程序启动时,默认会下载主包并启动主包内页面
    • tabBar 页面需要放到主包中
  2. 当用户进入分包内某个页面时,客户端会把对应分包下载下来,下载完成后再进行展示
    • 非 tabBar 页面可以按照功能的不同,划分为不同的分包之后,进行按需下载

6. 分包的体积限制

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

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

使用分包

1. 配置方法

在这里插入图片描述

在这里插入图片描述

2. 打包原则

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

3. 引用原则

  1. 主包无法引用分包内的私有资源
  2. 分包之间不能相互引用私有资源
  3. 分包可以引用主包内的公共资源

在这里插入图片描述

独立分包

1. 什么是独立分包

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

在这里插入图片描述

2. 独立分包和普通分包的区别

最主要的区别:是否依赖于主包才能运行

  • 普通分包必须依赖于主包才能运行
  • 独立分包可以在不下载主包的情况下,独立运行

3. 独立分包的应用场景

开发者可以按需,将某些具有一定功能独立性的页面配置到独立分包中。原因如下:

  • 当小程序从普通的分包页面启动时,需要首先下载主包
  • 而独立分包不依赖主包即可运行,可以很大程度上提升分包页面的启动速度

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

4. 独立分包的配置方法

在这里插入图片描述

在这里插入图片描述

5. 引用原则

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

  1. 主包无法引用独立分包内的私有资源
  2. 独立分包之间,不能相互引用私有资源
  3. 独立分包和普通分包之间,不能相互引用私有资源
  4. 特别注意:独立分包中不能引用主包内的公共资源

分包预下载

1. 什么是分包预下载

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

2. 配置分包的预下载

预下载分包的行为,会在进入指定的页面时触发。在 app.json 中,使用 preloadRule 节点定义分包的预下载规则,示例代码如下:
在这里插入图片描述

3. 分包预下载的限制

同一个分包中的页面享有共同的预下载大小限额 2M,例如:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/164829.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

鸣人的影分身(动态规划 | DP | 整数划分模型)[《信息学奥赛一本通》]

题目如下: 在火影忍者的世界里,令敌人捉摸不透是非常关键的。 我们的主角漩涡鸣人所拥有的一个招数——多重影分身之术——就是一个很好的例子。 影分身是由鸣人身体的查克拉能量制造的,使用的查克拉越多,制造出的影分身越强。…

6.R语言【频数、频率统计函数】一维、二维、三维

b站课程视频链接: https://www.bilibili.com/video/BV19x411X7C6?p1 腾讯课堂(最新,但是要花钱,我花99😢😢元买了,感觉讲的没问题,就是知识点结构有点乱,有点废话)&…

PostgreSQL数据库FDW——Parquet S3 MultifileMergeExecutionStateBaseS3

MultifileMergeExecutionStateBaseS3和SingleFileExecutionStateS3、MultifileExecutionStateS3类不同,reader成员被替换为ParquetReader *类型的readers vector。新增slots_initialized布尔变量指示slots成员是否已经初始化。slots成员是Heap类,Heap用于…

重装系统Windows10纯净版操作步骤(微pe)

目录 前言 操作步骤 第一步:格式化硬盘 第二步:硬盘重新分区 固态硬盘分区 机械硬盘分区 完成效果展示 第三步:把ISO镜像文件写入固态硬盘 第四步:关机拔u盘 第五步:开机重装系统成功 前言 1.要重装系统&am…

Webpack提取页面公共资源

1. 利用html-webpack-externals-plugin 分离基础库 在做React开发时,经常需要引入react和react-dom基础库,这样在打包的时候速度就会比较慢,这种情况下我们可以将这些基础库忽略掉,将它们通过CDN的方式直接引入,而不打…

apache和IIS区别?内网本地服务器项目怎么让外网访问?

Apache和IIS是比较常用的搭建服务器的中间件,它们之间还是有一些区别差异的,下面就详细说说 Apache和IIS有哪些区别,以及如何利用快解析实现内网主机应用让外网访问。 1.安全性 首先说说apache和IIS最基本的区别。Apache运行的操作系统通常为…

Python数学建模问题总结(3)数据可视化Cookbook指南·下

概括总结:五、样式:优化图表、数据可视1.形状:形状的精确程度;2.颜色:区分类别、表示数量、突出特定数据、表示含义;3.线:点划线或不同的不透明度;4.文字排版:应用于图表…

IOC/DI配置管理第三方bean及注解开发。

目录 一、IOC/DI 配置管理第三方bean 1、配置第三方bean 2、加载properties 文件 3、核心容器 二、注解开发 1、注解开发定义bean 2、纯注解开发模式 3、注解开发bean作用范围与生命周期管理 4、注解开发依赖注入 三、IOC/DI注解开发管理第三方bean 1、注解开发管…

深度学习中有哪些从数学模型或相关理论出发, 且真正行之有效的文章?

自深度学习兴起后,深层网路对图像进行特征学习,将低层次的基础特征聚合成更高级的语义特征,取得突出的识别效果,在图像识别、分割及目标检测三大领域得到了众多应用。深度学习算法基本上是由多个网络层搭建,每个网络层…

SpringBoot自动装配

前言 Spring翻译为中文是“春天”,的确,在某段时间内,它给Java开发人员带来过春天,但是随着我们项目规模的扩大,Spring需要配置的地方就越来越多,夸张点说,“配置两小时,Coding五分…

Open3D Usage

Open3D UsageWhat is open3Dopen3D 核心功能包括:python quick start交互指令显示点云**read_point_cloud** ParametersReturnPointCloud的属性:加载ply点云:显示单帧点云:批量单帧显示点云可视化**draw_geometries** Parameters含…

Uniswap v3 详解(三):交易过程

交易过程 v3 的 UniswapV3Pool 提供了比较底层的交易接口,而在 SwapRouter 合约中封装了面向用户的交易接口: exactInput:指定交易对路径,付出的 x token 数和预期得到的最小 y token 数(x, y 可以互换)e…

Studio One2023新版本更新功能介绍

Studio One 6是一款非常专业的音乐创作编辑软件。为用户提供了所有一切你所需要创作的功能,包括所有的歌曲、项目、仪表板等动能,而且还自定义添加配置文件,良好的界面交互和丰富的功能板块,再结合优秀的性能,能够满足…

基于SpringBoot的SSMP整合(数据层)

模块创建 新建&#xff1a; 添加依赖项&#xff1a; 由于parent没有版本维护&#xff0c;还需在pom.xml文件再次添加&#xff1a; <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version…

Django REST framework--类视图

Django REST framework--类视图基于类的视图APIView类视图generics通用类视图视图集DRF框架路由基于类的视图 项目开发中要不断思考如何让代码保持高内聚&#xff0c;低耦合&#xff0c;因此优化代码的道路上一直都不停歇。目前开发的视图是基于函数形式的&#xff0c;特点是灵…

Effective Objective-C 2.0学习记录(四)

学习记录15.用前缀避免命名空间冲突16.提供“全能初始化方法”17.实现description方法debugDescription&#xff1a;18.尽量使用不可变对象19.使用清晰而协调的命名方式类与协议的命名20.为私有方法名加前缀21.理解OC错误模型22.理解NSCopying协议深拷贝和浅拷贝15.用前缀避免命…

【1-神经网络计算】北京大学TensorFlow2.0

课程地址&#xff1a;【北京大学】Tensorflow2.0_哔哩哔哩_bilibiliPython3.7和TensorFlow2.1六讲&#xff1a;神经网络计算&#xff1a;神经网络的计算过程&#xff0c;搭建第一个神经网络模型神经网络优化&#xff1a;神经网络的优化方法&#xff0c;掌握学习率、激活函数、损…

ArcGIS基础实验操作100例--实验99三维爆炸分析

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台&#xff1a;ArcGIS 10.6 实验数据&#xff1a;请访问实验1&#xff08;传送门&#xff09; 空间分析篇--实验99 三维爆炸分析 目录 一、实验背景 二、实验数据 三、实验步骤 &#xff08;1&…

Open3D ICP精配准(使用鲁棒性核函数,Python版本)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 标准的ICP算法(点到平面)是使得下面这个目标函数最小化: 其中 p 、 q p、q p、q是相对应的匹配点,

RocketMQ5.0.0路由中心NameServer

一、NameServer概览NameServer是RocketMQ的注册中心&#xff0c;是消息存储Broker、生产者、消费者沟通的桥梁。NameServer集群之间是相互独立的&#xff0c;Broker启动时向所有NameServer注册中心注册。通过DLedger构建NameServer集群&#xff0c;实现如主从切换等功能。启动N…