原生小程序小话题——按需载入、占位组件、骨架屏

这篇具有很好参考价值的文章主要介绍了原生小程序小话题——按需载入、占位组件、骨架屏。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

第一部分 按需加载

通常情况下启动小程序,小程序的页面和包会全部载入,很耗时,对于一些性能不足的机器也不友好(比如我的老手机),这时候可以使用按需加载,就是懒加载,开启懒加载的方式也非常简单,直接在app.json当中添加如下字段就可以了。

  "lazyCodeLoading": "requiredComponents"

按照官网的说法,该页面配置文件中的usingComponents字段中所有的组件,包括app.json中的全局引入的组件都会被加载。

第二部分 用时注入

用时注入前提一定是开启了按需加载,即使主要讲的就是占位组件,这个占位组件其实有点类似于骨架屏,或者react当中的suspense的用法,就是一个在组件加载好之前的placeholder,我们实验一下。

首先肯定是在app.js的页面开启按需加载,开启这个选项之后,每次重新编译的时候,你是可以在调试器的console部分,看到这行字的

VM1062 WAService.js:1 [system] LazyCodeLoading: true

然后我们要写一个占位组件,我们这里叫placeholder

<view class="red">爷今天就占这个位子了</view>

很简单,我们还加上了红色字体,生怕组件加载太快,占位组件一闪而过,不太好辨识,随后我们在主要页面的json部分引入你的组件和对应的占位组件,并用如下字段确认这种对应的关系

 "componentPlaceholder": {
    "com-test7":"placeholder"
  }

这段json的意思就是com-test7对应的占位组件就是placeholder,然后我们给com-test7加上一个wx:if和一个button,模拟一下加载状态

<view wx:if="{{flag}}">
<com-test7 generic:selectable="son2"></com-test7>
<com-test7 generic:selectable="son1"></com-test7>
</view>
<button type="primary" bindtap="handleflag">show</button>

其实这com-test7就是上次测试抽象节点使用的组件,点击show,测试是成功的,但是时间太短了,我这里也不好截图什么的,没那个能力,晓得吧。

第三部分 骨架屏

这个部分小程序贴心的把你搞好了,本质上就是引入了一个固定的template,然后通过wx:if来进行控制

生成骨架屏,当然你可以自己写一个,这里我们使用的编辑器自带的生成方式,如下图,点击我画圈的部分

原生小程序小话题——按需载入、占位组件、骨架屏

原生小程序小话题——按需载入、占位组件、骨架屏

 然后就会出现生成骨架屏的选项,然后会生成这两个文件

原生小程序小话题——按需载入、占位组件、骨架屏

 实际上骨架屏就是一个页面加css,我们需要将其在主页面,我这边就是page6页面引入,具体引入的方式可以参考一下我前面关于模板的文章,接下来就是通过wx:if去进行控制,给大家看一下我页面的具体写法

<!--pages/page6/page6.wxml-->
<!-- 引入骨架屏的template -->
<import src="./page6.skeleton" />
<template is="skeleton" wx:if="{{loading}}"/>
<!-- 下面是我们的真实页面部分 -->
<view class="container" wx:if="{{!loading}}">
<view>欢迎来到page6</view>
<view class="tip">抽象节点测试</view>
<view wx:if="{{flag}}">
<com-test7 generic:selectable="son2"></com-test7>
<com-test7 generic:selectable="son1"></com-test7>
</view>
<button type="primary" bindtap="handleflag">show</button>

<view class="tip">抽象占位组件</view>
<!-- 这个测试看一下上面的flag -->
</view>

 下面的container类其实就是我的正经的主页面,这里的话可以明显的看到骨架屏的显示条件是和真实页面相反的,这个loading是我在data部分设定的一个flag值,初始值是true,当页面准备完成之后就变成了false,其中的操作我们在主页面的onReady的生命周期下执行,当然我怕太快看不清,还加上一个计时器,看一下写法

  onReady() {
    setTimeout(()=>{
      this.setData({
        loading:false
      })
    },4000)
  },

测试了一下,成功没啥问题。

当然我们官网细心的给了一个project.config.json文件来给你指定一些细节,各位可以到官网上去看一看。

并且骨架屏还是可以分步显示的,但是我觉得分步骨架屏还不如使用占位组件,今天就写到这儿吧。文章来源地址https://www.toymoban.com/news/detail-492865.html

到了这里,关于原生小程序小话题——按需载入、占位组件、骨架屏的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序启用组件按需注入解决方案

    1.当使用uniapp发布微信小程序,上传到微信小程序版本库时,会检查代码,常会出现代码质量问题,如下图所示  解决方案如下 在上传代码之后,本地文件会生成unpackage文件夹,在unpackage/dist/build/mp-weixin文件夹中,找到app.json文件,在最后加入代码\\\"lazyCodeLoading\\\" : \\\"requiredCompo

    2024年02月11日
    浏览(47)
  • uniapp 小程序启用组件按需注入 “lazyCodeLoading“: “requiredComponents“

    注意:添加这项配置后,未使用到的代码文件将不被执行。 在开启「按需注入」特性的前提下,「用时注入」可以指定一部分自定义组件不在小程序启动时注入,而是在真正渲染的时候才进行注入。 在已经指定 lazyCodeLoading 为 requiredComponents 的情况下,为自定义组件配置 占位

    2024年02月15日
    浏览(50)
  • 微信小程序 配置自定义组件代码按需注入 lazyCodeLoading

    微信小程序 配置自定义组件代码按需注入 lazyCodeLoading 官方网址 在app.json最后一行加上,就可以了。

    2024年02月12日
    浏览(55)
  • uni-app 微信小程序:启用组件按需注入

    https://developers.weixin.qq.com/miniprogram/dev/framework/ability/lazyload.html 基础库 2.11.1 及以上版本支持,2.11.1 以下兼容但无优化效果。 工具调试请使用 1.05.2111300 及以上版本,基础库选 2.20.1 及以上版本。 通常情况下,在小程序启动时,启动页面依赖的所有代码包(主包、分包、插件包

    2024年02月16日
    浏览(53)
  • uni-app 微信小程序启用组件按需注入

    uni-appi 微信小程序开发,微信小程序开发工具代码质量检查显示 启用组件按需注入:未通过 。 通过官方文档可知,微信小程序自基础库版本2.11.1起,小程序支持有选择地注入必要的代码,以降低小程序的启动时间和运行时内存。配置方法如下: 添加配置 在 manifest.json 配置

    2024年02月12日
    浏览(71)
  • vue3自定义封装组件:消息提示、轮播图、加载更多、骨架屏组件

    定义组件:src/components/library/xtx-infinite-loading.vue 注册组件:src/components/library/index.js  引用组件:src/main.js 使用组件: .vue文件 首先是轮播图的样式:src/components/library/xtx-carousel.vue  然后是轮播图的结构与逻辑封装:src/components/library/xtx-carousel.vue 插件注册:src/components/library

    2024年02月12日
    浏览(44)
  • vue按需加载组件

    写vue时候,通常会进行路由懒加载,如下: 写vue代码页面时,可以使用按需加载组件 大多数情况下,vue页面可能是如下的写法:访问该页面/组件时,就立刻加载business.vue 也可以使用这种按需加载方式来优化性能:Business激活时才会进行加载

    2024年02月08日
    浏览(33)
  • 微信小程序(原生)封装弹框组件

    小程序封装原生弹框组件(一个弹框,点击确定关闭弹框,有需要的直接复制哦) 上面是组件的内容,下面是引用方法 首先第一步在app.json或者单文件json文件引入 我用的比较多就在app.json引入的 下面是文件使用方法: 只需要子啊data中控制这两个属性就可以了,喜欢的点个赞

    2024年02月11日
    浏览(59)
  • 第十三章 实现组件库按需引入功能

    组件库会包含几十甚至上百个组件,但是应用的时候往往只使用其中的一部分。这个时候如果全部引入到项目中,就会使输出产物体积变大。按需加载的支持是组件库中必须考虑的问题。 目前组件的按需引入会分成两个方法: 经典方法:组件单独分包 + 按需导入 + babel-plug

    2024年02月11日
    浏览(49)
  • 微信小程序原生写法——24小时时间选择器组件

    使用picker-view来封装成的一个时间选择器 开始时间是当前时间的一个小时之后,秒默认是0秒 可能还有一些情况未处理,后续发现再更新 js文件 第一版:略繁琐 第二版js文件:根据当前时间的时间戳A与24小时之后的时间戳B两者来进行处理获取对应的列表 json文件 wxml文件 wxs

    2024年02月04日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包