减少初始化开销
应用初始化阶段的代码复杂度直接影响应用/页面实例的创建耗时,优化该阶段的执行效率能显著改善首屏渲染性能。
避免引入耗时自执行模块
Section titled “避免引入耗时自执行模块”推荐级别:强烈
模块中的自执行逻辑会在导入时立即执行,导致页面加载阻塞。应将初始化逻辑移至生命周期钩子中按需执行。
反例
// init.js 中的自执行逻辑会立即执行,延长加载时间import './init.js' // 包含立即执行的复杂初始化逻辑export default {}正例
export default { onInit() { // 将初始化逻辑移至生命周期钩子中按需执行 this.performInitialization() }, performInitialization() { // 具体的初始化操作 },}优化 app.ux 数据管理
Section titled “优化 app.ux 数据管理”推荐级别:建议
过度加载的全局数据会延长应用启动时间,建议遵循以下原则:
- 仅将全局共享状态存储在 app.ux
- 工具类方法按需在各页面独立引入
反例
// app.uximport utils from './utils' // 引入可能包含复杂逻辑的工具库
export default { utils, // 全局挂载非必要工具方法 // ...其他全局配置}长页面分段加载
Section titled “长页面分段加载”推荐级别:建议
对复杂长页面实施分阶段加载策略:
- 首屏优先加载关键数据/视图
- 可视区域外内容延迟加载
正例 1
<template> <div> <div for="{{visibleItems}}"> <text>{{$item}}</text> </div> </div></template><script> const fullDataset = [.../* 完整数据集 */] export default { data: { visibleItems: [], }, onInit() { // 首屏加载前6条 this.visibleItems = fullDataset.slice(0, 6) }, onShow() { // onShow 后显示所有数据 this.visibleItems = fullDataset }, }</script>正例 2
<template> <div> <!-- 首屏核心模块 --> <critical-module />
<!-- 次要模块延迟加载 --> <secondary-module if="{{isSecondaryLoaded}}" /> </div></template><script> export default { data: { isSecondaryLoaded: false, }, onShow() { // 首屏渲染完成后加载次要模块 this.isSecondaryLoaded = true }, }</script>