分包加载
分包的使用方式和微信小程序的方式完全相同
值得注意的是,普通分包
和 独立分包
在 weapp-vite
中的处理方式是不同的
普通分包
普通分包被视为和整个 app
是一个整体,所以它们是在一个 rollup
上下文里面进行打包的
根据引用规则:
packageA
无法require
packageB
JS
文件,但可以require
主包、packageA
内的JS
文件;使用分包异步化
时不受此条限制packageA
无法import
packageB
的template
,但可以require
主包、packageA
内的template
packageA
无法使用packageB
的资源,但可以使用主包、packageA
内的资源
代码产物的位置
所以假如有可以复用的 js
代码,它们产物的位置,取决于它们被引入使用的文件位置,这里我们以工具类 utils
为例,展示处理策略上的区别
- 假如
utils
只被packageA
中的文件使用,那么utils
的产物只会出现在dist
产物的packageA
中 - 假如
utils
在packageA
和packageB
中使用,那么utils
的产物会被提炼到主包中 - 假如
utils
在packageA
和主包中使用,那么utils
的产物,也会被提炼到主包中
通过这种方式,对分包场景进行默认的优化,当然你可以使用 advanced-chunks 功能,对分包场景进行更加细致的优化
独立分包
独立分包和整个 app
是隔离的,所以它们是在不同的上下文里面进行打包的,它们是不会去共享复用的 js
代码的
- 独立分包中不能依赖主包和其他分包中的内容,包括
js
文件、template
、wxss
、自定义组件、插件等(使用分包异步化
时 js 文件、自定义组件、插件不受此条限制) - 主包中的
app.wxss
对独立分包无效,应避免在独立分包页面中使用app.wxss
中的样式;App
只能在主包内定义,独立分包中不能定义App
,会造成无法预期的行为; - 独立分包中暂时不支持使用插件。