小程序优化之占位组件

06月/22日/小程序/浏览 250

小程序越来越“大”。官方出的优化方法也越来越多。


为自定义组件配置占位组件,可以指定该组件不在小程序启动时立即注入,而是等到页面中其他元素渲染完成后才注入。基础库会用占位组件替代组件进行渲染,在该组件注入后再将占位组件替换。


一个自定义组件的占位组件可以是另一个自定义组件或一个内置组件。



配置


页面或自定义组件对应的 JSON 配置中的 componentPlaceholder 字段用于指定占位组件,如:


{
  "usingComponents": {
    "comp-a": "../comp/compA",
    "comp-b": "../comp/compB",
    "comp-c": "../comp/compC"
  },
  "componentPlaceholder": {
    "comp-a": "view",
    "comp-b": "comp-c"
  }
}


该配置表示:


组件 comp-a 的占位组件为内置组件 view

组件 comp-b 的占位组件为自定义组件 comp-c(其路径在 usingComponents 中配置)


假设该配置对应的模板如下:


<button ontap="onTap">显示组件</button>
<comp-a wx-if="{{ visible }}">
  <comp-b prop="{{ p }}">text in slot</comp-b>
</comp-a>


小程序启动时 visible 为 false,那么只有 button 会被渲染;点击按钮后,this.setData({ visible: true }) 被执行,此时如果 comp-a, comp-b 均不可用,则页面将被渲染为:


<button>显示组件</button>
<view>
  <comp-c prop="{{ p }}">text in slot</comp-c>
</view>


comp-a 与 comp-b 准备完成后,页面被替换为:


<button>显示组件</button>
<comp-a>
  <comp-b prop="{{ p }}">text in slot</comp-b>
</comp-a>


发表评论

暂无评论,抢个沙发...

客服 工单