Skip to content

分包加载

分包的使用方式和微信小程序的方式完全相同

分包加载-微信官方文档

值得注意的是,普通分包独立分包weapp-vite 中的处理方式是不同的

普通分包

普通分包被视为和整个 app 是一个整体,所以它们是在一个 rollup 上下文里面进行打包的

根据引用规则:

  • packageA 无法 require packageB JS 文件,但可以 require 主包、packageA 内的 JS 文件;使用 分包异步化 时不受此条限制
  • packageA 无法 import packageBtemplate,但可以 require 主包、packageA 内的 template
  • packageA 无法使用 packageB 的资源,但可以使用主包、packageA 内的资源

代码产物的位置

所以假如有可以复用的 js 代码,它们产物的位置,取决于它们被引入使用的文件位置,这里我们以工具类 utils 为例,展示处理策略上的区别

  1. 假如 utils 只被 packageA 中的文件使用,那么 utils 的产物只会出现在 dist 产物的 packageA
  2. 假如 utilspackageApackageB 中使用,那么 utils 的产物会被提炼到主包中
  3. 假如 utilspackageA 和主包中使用,那么 utils 的产物,也会被提炼到主包中

通过这种方式,对分包场景进行默认的优化,当然你可以使用 advanced-chunks 功能,对分包场景进行更加细致的优化

独立分包

独立分包和整个 app 是隔离的,所以它们是在不同的上下文里面进行打包的,它们是不会去共享复用的 js 代码的

  • 独立分包中不能依赖主包和其他分包中的内容,包括 js 文件、templatewxss、自定义组件、插件等(使用 分包异步化 时 js 文件、自定义组件、插件不受此条限制)
  • 主包中的 app.wxss 对独立分包无效,应避免在独立分包页面中使用 app.wxss 中的样式; App 只能在主包内定义,独立分包中不能定义 App,会造成无法预期的行为;
  • 独立分包中暂时不支持使用插件。

Released under the MIT License.