uniapp微信小程序之分包异步化之组件分包

本文详细介绍了uni-app微信小程序中组件分包异步化的重要性和解决的问题,包括主包空间不足和访问速度优化。同时,针对开启组件分包异步化过程中遇到的占位组件配置、$refs访问报错和多分包组件互相调用等问题,提出了具体的解决方案,如正确配置componentPlaceholder,延迟$refs访问,以及两种不同的组件互相调用策略。
摘要由CSDN通过智能技术生成

一、组件分包异步化解决的问题

  1. 日渐增加的通用组件造成的主包空间不足;

  2. 提升小程序访问速度,降低白屏率;

二、开启组件分包异步化过程中遇到的问题

  1. 如何进行占位组件配置;

  2. 如何解决通过$refs访问异步组件报错;

  3. 如何判断所有异步组件都已加载完毕;

  4. 多分包组件之间互相调用如何配置;

  • 占位组件配置

        直接在页面路由配置文件pages.json中对应调用异步组件的页面配置style中配置对应的componentPlaceholder,uniapp编译成微信小程序时会将componentPlaceholder同步到页面json配置中。

例如:

  "pages": [
    {
      "path": "pages/index/index",
UniApp中使用ECharts时,为了优加载速度和提高应用性能,特别是当TabBar页面较多且每个页面都需要使用ECharts时,可以考虑将ECharts分包处理。以下是在 UniApp 中实现 ECharts 分包的步骤: 1. **按需引入**: - 在 TabBar 页面中,根据实际需要引入 ECharts 和相关的图表组件,而不是全局引入。这样只有用到的图表才会在编译时被打包。 ```javascript // 示例代码 import { loadComponent } from '/@ uniapp/framework/runtime/wrapper'; export default { onLoad() { loadComponent({ name: 'eccharts', path: '../components/ECharts.vue', // ECharts 组件的路径 }).then((component) => { this.myChart = component.create(this); }); }, } ``` 2. **使用懒加载**: - 如果ECharts是通过异步组件的方式引入的,可以利用 Vue 的动态导入 (`import()`) 功能实现按需加载。 ```javascript export default { async onLoad() { if (!this.myChart) { const { default: ECharts } = await import('echarts'); // 按需加载 ECharts this.myChart = new ECharts({ // 初始配置项 }); } }, } ``` 3. **代码分割(Code Splitting)**: - 在uni-app的配置文件`app.json`或`config.js`中,可以设置代码分割策略,将ECharts库和其他大文件单独打包。 ```json // app.json 或 config.js "splitChunks": { "cacheGroups": { "echarts": { test: /[\\/]node_modules[\\/]/, include: ['echarts'], priority: 10, // 设置优先级,让ECharts先加载 chunks: 'all' // 使用所有模式打包 } } } ``` 4. **资源预加载**: - 可以在需要ECharts的页面首次加载前,使用 `preload()` 方法预加载资源,加快实际加载速度。 ```javascript // 示例 import('echarts').then(() => { // 在这里可以预加载ECharts资源 }); // 或者在生命周期钩子 onReady 中做预加载 onReady() { window.preloadEChartsResources(); } async function preloadEChartsResources() { // 预加载ECharts相关资源 } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值