118.【微信小程序 - 02】(八)

简介: 118.【微信小程序 - 02】

3.分包 - 独立分包

(1).什么是独立分包

独立分包本质上也是分包,只不过它比较特殊,可以独立于主包和其他分包而独立运行

(2).独立分包和普通分包的区别

最主要的区别: 是否依赖于主包才能运行

  • 普通分包必须依赖于主包才能运行
  • 独立分包可以在不下载主包的情况下独立运行。
(3).独立分包的应用场景

开发者可以按需,将某些具有一定功能独立性的页面配置到独立分包中。原因如下:

  1. 当小程序从普通的分包页面启动时,需要首先下载主包
  2. 而独立分包不依赖主包即可运行,可以很大程度上提升分包页面的启动速度

注意: 一个程序种可以有多个独立分包

(4).独立分包的配置方法

是否有indepentdent为 true 这个节点。如果有的话,就是独立分包

将分包okgB转变为 独立分包

{
      "root": "pkgB",
      "name": "p2",
      "pages": [
        "pages/apple/apple"
      ],
      "independent": true
    }
(5).引用原则

独立分包和普通分包以及主包之间,是相互隔绝的,不能相互引用彼此的资源

  1. 主包无法引用独立分包内的私有资源
  2. 独立分包之间,不能相互引用私有资源
  3. 独立分包和普通分包之间,不能相互引用私有资源
  4. 特别注意独立分包中不能引用主包内的公共资源。普通分包是可以实现引用主包内的资源。

4.分包 - 分包预下载

(1).什么是分包预下载

分包预下载指的是:在进入小程序的某个页面时,由框架自动预下载可能需要的分包,从而提升进入后续分包页面时的启动速度。

比如 进入到 联系页面,可能要用到 cat 页面,我们就预下载 pack1 分包

(2).配置分包的预下载

预下载分包的行为,会在进入指定的页面时触发。在 app.json 中,使用 preloadRule 节点定义分包的预下载规则

"preloadRule": {  
      "pages/contact/contact":{
        "packages": ["pkgA"],
        "network": "all"
      }
  },

(3).分包预下载的限制

同一个分包中的页面享有共同的预下载大小限额2M,例如:

  • 当小程序进入到主页面的时候,会下载他们所对应的分包(分包预下载),他们共同的预下载不能超过 2兆

5.案列 - 自定义 tabBar

(1).本案列主要用到的知识点
  • 自定义组件
  • Vant组件库
  • MobX数据共享
  • 组件样式隔离
  • 组件数据监听
  • 组件的behaviors
  • Vant样式覆盖
(2).实现步骤

自定义tabBar分为3大步骤

  1. 配置信息 (app.json)
  2. 添加tabBar代码文件
  3. 编写tabBar代码
(3).配置信息
  • app.json 中的 tabBar 项指定 custom 字段,同时其余 tabBar 相关配置也补充完整。
  • 所有 tab 页的 json 里需声明 usingComponents 项,也可以在 app.json 全局开启。
  1. 为了保证低版本兼容以及区分哪些页面是 tab 页,tabBar 的相关配置项需完整声明,但这些字段不会作用于自定义 tabBar 的渲染。
"tabBar": {
    "custom": true,
    "list": [
      {
      "pagePath": "pages/home/home",
      "text": "首页",
      "iconPath": "images/index.png",
      "selectedIconPath": "images/index-active.png"
    },
    {
      "pagePath": "pages/message/message",
      "text": "信息",
      "iconPath": "images/mail.png",
      "selectedIconPath": "images/mail-active.png"
    },
    {
      "pagePath": "pages/contact/contact",
      "text": "电话",
      "iconPath": "images/phone.png",
      "selectedIconPath": "images/phone-active.png"
    }
  ]
  },
  1. 添加 tabBar 代码文件

在代码根目录下添加入口文件:

custom-tab-bar/index.js
custom-tab-bar/index.json
custom-tab-bar/index.wxml
custom-tab-bar/index.wxss

(4).添加tabBar代码文件
  1. 引入Vant做效果装饰

app.json

引用的是单个组件

"usingComponents": {
  "van-tabbar": "@vant/weapp/tabbar/index",
  "van-tabbar-item": "@vant/weapp/tabbar-item/index"
}

  1. 自定义选中图标和未选中图标
<van-tabbar-item info="3">
    <image
      slot="icon"
      src="/images/index.png"  选中的路径图片
      mode="aspectFit"
      style="width: 30px; height: 18px;"
    />
    <image
      slot="icon-active"
      src="/images/index-active.png"  未选中的路径图片
      mode="aspectFit"
      style="width: 30px; height: 18px;"
    />
    首页
  </van-tabbar-item>
<!--custom-tab-bar/index.wxml-->
<van-tabbar active="{{ active }}" bind:change="onChange">
  <van-tabbar-item info="3">
    <image
      slot="icon"
      src="/images/index.png"
      mode="aspectFit"
      style="width: 30px; height: 18px;"
    />
    <image
      slot="icon-active"
      src="/images/index-active.png"
      mode="aspectFit"
      style="width: 30px; height: 18px;"
    />
    首页
  </van-tabbar-item>
  <van-tabbar-item icon="home-o">标签</van-tabbar-item>
  <van-tabbar-item icon="search">标签</van-tabbar-item>
  <van-tabbar-item icon="friends-o">标签</van-tabbar-item>
  <van-tabbar-item icon="setting-o">标签</van-tabbar-item>
</van-tabbar>

  1. 循环遍历自定义图标

赋值app.json的tabBar的list数组到index.js的data区域中

对象其实也是 “” 引用的,只不过在data区域可以省略

"list": [
      {
      "pagePath": "pages/home/home",
      "text": "首页",
      "iconPath": "/images/index.png",
      "selectedIconPath": "/images/index-active.png"
    },
    {
      "pagePath": "pages/message/message",
      "text": "信息",
      "iconPath": "/images/mail.png",
      "selectedIconPath": "/images/mail-active.png"
    },
    {
      "pagePath": "pages/contact/contact",
      "text": "电话",
      "iconPath": "/images/phone.png",
      "selectedIconPath": "/images/phone-active.png"
    }
  ]

index.wxml

<!--custom-tab-bar/index.wxml-->
<van-tabbar active="{{ active }}" bind:change="onChange">
  <van-tabbar-item wx:for="{{list}}" wx:key="index">
    <image
      slot="icon"
      src="{{item.iconPath}}"
      mode="aspectFit"
      style="width: 30px; height: 18px;"
    />
    <image
      slot="icon-active"
      src="{{item.selectedIconPath}}"
      mode="aspectFit"
      style="width: 30px; height: 18px;"
    />
   {{item.text}}
  </van-tabbar-item>
</van-tabbar>



相关文章
|
10月前
|
机器学习/深度学习 编解码 人工智能
扩散模型失宠?端侧非自回归图像生成基础模型Meissonic登场,超越SDXL!
Meissonic是一种新型图像生成模型,采用非自回归的掩码图像建模(MIM)方法,在性能和效率上超越了当前最先进的扩散模型SDXL。其创新点包括改进的注意力机制、多尺度特征提取、先进位置编码策略和优化采样条件等,能够生成高质量、高分辨率图像。此外,Meissonic引入人类偏好评分和特征压缩层,提升图像质量和计算效率。尽管存在一些挑战,Meissonic为统一语言-视觉模型的发展提供了新思路,并在创意设计、虚拟现实等领域展现出广泛应用前景。
220 24
|
3月前
|
安全 测试技术 API
Python 单元测试详解
单元测试是Python开发中不可或缺的环节,能确保代码按预期运行、发现Bug、提升代码质量并支持安全重构。本文从基础概念讲起,逐步介绍Python单元测试的实践方法,涵盖unittest框架、pytest框架、断言使用、Mock技巧及测试覆盖率分析,助你全面掌握单元测试技能。
168 0
|
JSON 小程序 应用服务中间件
微信的openid是用户的唯一id吗?
【10月更文挑战第4天】微信的openid是用户的唯一id吗?
2448 5
|
10月前
|
机器学习/深度学习 人工智能 资源调度
基于AI的运维资源调度:效率与智能的双重提升
基于AI的运维资源调度:效率与智能的双重提升
1525 16
基于AI的运维资源调度:效率与智能的双重提升
|
机器学习/深度学习 人工智能 自然语言处理
|
安全 数据可视化 网络安全
微隔离实施五步法,让安全防护转起来
零信任安全模型起始于2010年,其核心原则是“最小权限”,强调预防为主。微隔离是实现零信任的关键实践,经历了从NGFW到SDP,再到CARTA框架的发展,最终NIST将其定义为解决方案,确认IAM、SDP和微隔离为落地实践。美国政府的行政令推动了零信任架构的应用,其中微隔离贯穿安全的各个层面。微隔离技术包括云平台原生、第三方虚拟化防火墙和主机Agent三种实现方式,已进入成熟期。实施微隔离涉及五个步骤:定义资产、梳理业务模型、实施保护、细化安全策略和持续监控。检验微隔离效果需通过攻防演练。企业应结合自身需求制定适合的微隔离建设方案。
|
C++ 容器
vector容器-预留空间讲解
vector容器-预留空间讲解
365 0
|
IDE 开发工具
一文解决Visual Studio 2022运行时系统找不到指定文件的错误(简单易懂 亲测有用)
一文解决Visual Studio 2022运行时系统找不到指定文件的错误(简单易懂 亲测有用)
5527 0
|
索引
【仿真建模】第二课:AnyLogic入门基础课程 - 行人仿真空间逻辑讲解
每个智能体都有个属性index,从0到n,所以我们创建多层建筑没必要一层一层建立,只需要把一层建筑封装成一个类,然后拖动出来,使用类似for循环的机制,去复制即可。指定初始位置,index*20,代表每层高度为20,通过index自增的索引进行高度自增。这里要注意,一定要将矩形墙的中心对准原点,因为在复制封装好的类时,它会以原点为参考原点。设置墙的颜色(大家自己选一个颜色即可),透明度设置为100(主要是为了能看清建筑内部)在工程面板找到刚新建的层,然后修改dZ为40(高度为40)
957 0
【仿真建模】第二课:AnyLogic入门基础课程 - 行人仿真空间逻辑讲解
下一篇
开通oss服务