小程序:如何合理规划分包使主包不超过2M

2023-10-25 06:44

本文主要是介绍小程序:如何合理规划分包使主包不超过2M,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

背景

做过小程序项目的同学应该都有这样的经历,项目做着做着,突然发现代码包的大小超过了 2M,小程序无法提审,然后痛苦的删文件改代码来减少包大小。

虽然我们也知道小程序给我们提供了分包的功能可以减少主包的大小,但是我们在一开始做项目的时候可能不会去规划然后一股脑放在主包里,当超过后才考虑哪些要放在分包里,这时候再去重构就会比较复杂了,今天我们来讨论一下如何合理的规划分包来避免代码包体积的问题。

思路

我们知道,小程序对代码的包大小有一些规则:

  • 整个小程序所有分包大小不超过 20M。
  • 单个分包/主包大小不能超过 2M。

那么首先,我们要挑出项目中比较大的文件,以我们项目为例,主要有两个:
1、vant 组件库(300K左右)
2、echarts 图表库(1M左右)

这样可以预见的是目前已经有1.3M的库了,加上一些插件也会打包进主包里,所以我们不能把这些库放到主包里,那么我们要讨论的问题有两个:
1、这些库放在哪里
2、确定放在哪之后,主包和其他分包如何依赖这些库

讨论1:这些库放在哪里

  • 方式一:放在业务的分包
  • 方式二:放在独立的分包

方式一

比如,当某个业务分包要使用 vant 库,就把 vant 库直接放在这个分包里。

  • 优点:
    • 分包独立,不依赖外部
  • 缺点:
    • 1、组件库冗余,可能会造成每个分包里都有一个组件库。
    • 2、需要更新时,各个分包使用的组件库版本可能会不统一(虽然也无伤大雅)
    • 3、主包无法依赖

总结:
对于缺点1很严重,整个小程序所有分包大小不超过 20M,用这种方式会极速膨胀,所以这种方式不适合
2,其实影响不大
3,可以按照方式二建立一个组件库分包,只供主包使用。

方式二

我们新建一个分包,里面只放 vant 库。
当某个业务分包要使用 vant 库,则依赖这个独立的分包(可以使用分包异步化)。

  • 优点:
    • 统一管理
    • 主包和分包都可以依赖
  • 缺点:
    • 1、使用分包异步化可能会有小的延迟。
    • 2、当库需要更新的时候,影响面比较大。

总结:
对于缺点1,无解,但是影响也不大
对于缺点2,无解,影响可大可小吧,现在的也基本上是这么干的

总结

方式一问题太大,不能用
方式二看起来会更好一些,虽然也有一些可能会遇到的问题,但是都不算很严重。

讨论2:主包和其他业务分包如何更优雅的依赖分包中的库

使用alias进行依赖,一些小程序第三方框架都会支持,或者自己用 webpack 配置 alias,使用如下:
json文件

{"usingComponents": {"van-button": "~@/subpackage-components/vant/button/index"},"componentPlaceholder": {"van-button": "view"}
}

js文件

const echarts = await import('@/subpackage-echarts/ec-canvas/echarts.js')

这篇关于小程序:如何合理规划分包使主包不超过2M的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/280737

相关文章

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟 开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚 第一站:海量资源,应有尽有 走进“智听

动态规划---打家劫舍

题目: 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。 思路: 动态规划五部曲: 1.确定dp数组及含义 dp数组是一维数组,dp[i]代表

软考系统规划与管理师考试证书含金量高吗?

2024年软考系统规划与管理师考试报名时间节点: 报名时间:2024年上半年软考将于3月中旬陆续开始报名 考试时间:上半年5月25日到28日,下半年11月9日到12日 分数线:所有科目成绩均须达到45分以上(包括45分)方可通过考试 成绩查询:可在“中国计算机技术职业资格网”上查询软考成绩 出成绩时间:预计在11月左右 证书领取时间:一般在考试成绩公布后3~4个月,各地领取时间有所不同

poj 2976 分数规划二分贪心(部分对总体的贡献度) poj 3111

poj 2976: 题意: 在n场考试中,每场考试共有b题,答对的题目有a题。 允许去掉k场考试,求能达到的最高正确率是多少。 解析: 假设已知准确率为x,则每场考试对于准确率的贡献值为: a - b * x,将贡献值大的排序排在前面舍弃掉后k个。 然后二分x就行了。 代码: #include <iostream>#include <cstdio>#incl

代码随想录冲冲冲 Day39 动态规划Part7

198. 打家劫舍 dp数组的意义是在第i位的时候偷的最大钱数是多少 如果nums的size为0 总价值当然就是0 如果nums的size为1 总价值是nums[0] 遍历顺序就是从小到大遍历 之后是递推公式 对于dp[i]的最大价值来说有两种可能 1.偷第i个 那么最大价值就是dp[i-2]+nums[i] 2.不偷第i个 那么价值就是dp[i-1] 之后取这两个的最大值就是d

EMLOG程序单页友链和标签增加美化

单页友联效果图: 标签页面效果图: 源码介绍 EMLOG单页友情链接和TAG标签,友链单页文件代码main{width: 58%;是设置宽度 自己把设置成与您的网站宽度一样,如果自适应就填写100%,TAG文件不用修改 安装方法:把Links.php和tag.php上传到网站根目录即可,访问 域名/Links.php、域名/tag.php 所有模板适用,代码就不粘贴出来,已经打

跨系统环境下LabVIEW程序稳定运行

在LabVIEW开发中,不同电脑的配置和操作系统(如Win11与Win7)可能对程序的稳定运行产生影响。为了确保程序在不同平台上都能正常且稳定运行,需要从兼容性、驱动、以及性能优化等多个方面入手。本文将详细介绍如何在不同系统环境下,使LabVIEW开发的程序保持稳定运行的有效策略。 LabVIEW版本兼容性 LabVIEW各版本对不同操作系统的支持存在差异。因此,在开发程序时,尽量使用

CSP 2023 提高级第一轮 CSP-S 2023初试题 完善程序第二题解析 未完

一、题目阅读 (最大值之和)给定整数序列 a0,⋯,an−1,求该序列所有非空连续子序列的最大值之和。上述参数满足 1≤n≤105 和 1≤ai≤108。 一个序列的非空连续子序列可以用两个下标 ll 和 rr(其中0≤l≤r<n0≤l≤r<n)表示,对应的序列为 al,al+1,⋯,ar​。两个非空连续子序列不同,当且仅当下标不同。 例如,当原序列为 [1,2,1,2] 时,要计算子序列 [

数学建模笔记—— 非线性规划

数学建模笔记—— 非线性规划 非线性规划1. 模型原理1.1 非线性规划的标准型1.2 非线性规划求解的Matlab函数 2. 典型例题3. matlab代码求解3.1 例1 一个简单示例3.2 例2 选址问题1. 第一问 线性规划2. 第二问 非线性规划 非线性规划 非线性规划是一种求解目标函数或约束条件中有一个或几个非线性函数的最优化问题的方法。运筹学的一个重要分支。2

这些心智程序你安装了吗?

原文题目:《为什么聪明人也会做蠢事(四)》 心智程序 大脑有两个特征导致人类不够理性,一个是处理信息方面的缺陷,一个是心智程序出了问题。前者可以称为“认知吝啬鬼”,前几篇文章已经讨论了。本期主要讲心智程序这个方面。 心智程序这一概念由哈佛大学认知科学家大卫•帕金斯提出,指个体可以从记忆中提取出的规则、知识、程序和策略,以辅助我们决策判断和解决问题。如果把人脑比喻成计算机,那心智程序就是人脑的