小程序首屏加载慢

  1. 检查图片
    检查图片包括:

  2. 图片是否过大

  3. 图片懒加载
    如果首页要加载的有很多列表或者图片展示,此时要注意图片加载时长,如果超过一定时间,懒加载是个不错的办法。

  4. 图片是否可以用cdn托管
    对于icon小图标可以放在小程序项目image文件夹里,但是如果图片占用资源,放在cdn托管既可以缩小代码包的大小还可以提升加载效率。

  5. 检查首屏接口耗时
    一个接口一个接口的排查,在network中查看加载的时间,逐个排查原因,所有请求最好在1s内返回结果。

  6. 检查有无错误日志
    在JS中如果在同步任务中,一个错误的发生会造成后面整段代码都不执行。
    此时应该排查下是否有异常错误,避免出现首屏一直处于加载的状态。必要的时候try catch处理。

  7. 检查界面是否使用定时器
    定时器一般设置为全局变量,或者定时器和倒计时相关功能绑定,用定时器一定要记得及时回收。

  8. 检查基础版本库
    如果首页使用里自定义组建,不同颁布要注意基础库要一致。可能不同基础库有些功能的支持条件不一致,要做兼容处理。

四. 优化策略

  1. 分包加载
    开发者通过在 app.json subpackages 字段声明项目分包结构

{
“pages”:[
“pages/index”,
“pages/logs”
],
“subpackages”: [
{
“root”: “packageA”,
“pages”: [
“pages/cat”,
“pages/dog”
]
}, {
“root”: “packageB”,
“name”: “pack2”,
“pages”: [
“pages/apple”,
“pages/banana”
]
}
]
}
分包之后优先加载主tab,二级界面可以理解为按需加载。
分包要注意,主包不能使用二级界面的样式或者js等,因为主包在加载时分包是不加载的。

  1. 利用缓存
    当小程序被销毁需要重新渲染界面时,此时冷启动会再次请求接口加载数据,可以利用小程序提供了缓存方法wx.setStorage、wx.getStorage将数据存储在本地。

  2. 不使用空白屏
    所谓空白屏就是当请求接口的数据没有被返回时,整个界面被hidden的,此时给用户的感觉就是白屏。
    推荐做法:当数据没有被渲染时展示页面的基本骨架,利用toast提示加载进度,给用户反馈出加载的进度,会延长用户的等待时间。把优先级高的内容做优先展示,缩短白屏时间;

  3. 首页架构调整
    调整页面展示顺序等,尽量让首屏简洁化。数据展示的尽量精简化。

  4. 渲染优化
    避免首页多次setData,未绑定的变量或者和界面无关的变量都不要在setData中体现,这样的情况大多出现在一个变量可能在初版的时候使用,下一个版本更改需求,有些变量不需要渲染界面里,但是程序员并有及时删除。

  5. 代码优化
    第一:在样式上,检查wxss的使用率,这个很重要又经常被忽视,经常发生在不同版本迭代中,需求和样式是经常被改动的,下一个版本更改没有及时删除掉不用的样式,可能有些程序员心里是想着有可能下次被用到,但是记得项目是有git托管的,可以借助git查找之前的代码记录,所以不是此版本的css大胆的删除吧。
    第二:在js上,一个js可能到上千行了,这个原因可能和业务逻辑有关,也可能是你写了太多的函数,没有用函数的封装处理。调用接口,没有用Promise封装或者其他封装办法。

### Vue3 和 Vite 构建项目的加载优化 为了提升基于 Vue3 和 Vite 的项目加载速度,可以从以下几个方面入手: #### 1. **减少文件体积** 通过减小打包后的文件大小来加快资源下载的速度。以下是几种常见的做法: - 使用 Tree Shaking 技术移除未使用的代码[^1]。 - 对 UI 组件库启用按需加载功能,仅引入实际需要的部分。 ```javascript // 示例:Ant Design Vue 按需加载配置 (vite.config.js) import { defineConfig } from 'vite'; import vue from '@vitejs/plugin-vue'; import AutoImport from 'unplugin-auto-import/vite'; import Components from 'unplugin-vue-components/vite'; export default defineConfig({ plugins: [ vue(), AutoImport({ /* 自动导入 */ }), Components({ /* 按需加载组件 */ }) ], }); ``` #### 2. **利用 CDN 加速** 将一些常用的第三方库托管到公共 CDN 上,从而减轻本地打包的压力并充分利用浏览器缓存机制。 ```html <!-- 示例:HTML 中引用外部 CDN --> <script src="https://cdn.jsdelivr.net/npm/vue@3"></script> ``` #### 3. **实现路由懒加载** 通过对不同模块实施动态导入的方式,使得只有当用户访问特定页面时才会去请求对应的脚本文件。 ```javascript // 示例:Vue Router 路由懒加载 const routes = [ { path: '/about', component: () => import('@/views/AboutView.vue') // 动态加载 About 页面 } ]; ``` #### 4. **采用片懒加载技术** 借助 `vue-lazyload` 插件或其他类似的解决方案,在滚动至可视区域之前不立即渲染像内容,以此降低初始 DOM 渲染负担[^2]。 ```javascript // 安装插件 npm install vue-lazyload --save // 主入口 main.js 或 setupPlugin.ts 添加初始化逻辑 import VueLazyLoad from 'vue-lazyload' app.use(VueLazyLoad, { preLoad: 1.3, error: require('./assets/error.png'), loading: require('./assets/loading.gif') }) ``` #### 5. **拆分 Vendor 文件** 默认情况下,所有依赖会被集中放置于单个 vendor chunk 中;然而这可能造成首页加载过大而影响体验。因此建议调整 rollupOptions 来分离各个独立包[^3]。 ```javascript // vite.config.js 设置多 chunks 输出策略 build: { rollupOptions: { output: { manualChunks(id) { if (id.includes('node_modules')) { return id.toString().split('node_modules/')[1].split('/')[0]; } }, }, }, }, ``` 以上措施能够有效改善 Vue3 + Vite 应用程序的启动表现,并显著缩短用户的等待感知时间。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端段

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值