小程序独立分包

阅读 663 标签:小程序  

独立分包是小程序中一种特殊类型的分包,可以独立于主包和其他分包运行。从独立分包中页面进入小程序时,不需要下载主包。当用户进入普通分包或主包内页面时,主包才会被下载。

开发者可以按需将某些具有一定功能独立性的页面配置到独立分包中。当小程序从普通的分包页面启动时,需要首先下载主包;而独立分包不依赖主包即可运行,可以很大程度上提升分包页面的启动速度。

一个小程序中可以有多个独立分包。

小游戏在基础库 v2.12.2 开始支持独立分包,

配置方法

假设小程序目录结构如下:

├── app.js
├── app.json
├── app.wxss
├── moduleA
│   └── pages
│       ├── rabbit
│       └── squirrel
├── moduleB
│   └── pages
│       ├── pear
│       └── pineapple
├── pages
│   ├── index
│   └── logs
└── utils

开发者通过在app.jsonsubpackages字段中对应的分包配置项中定义independent字段声明对应分包为独立分包。

{
  "pages": [
    "pages/index",
    "pages/logs"
  ],
  "subpackages": [
    {
      "root": "moduleA",
      "pages": [
        "pages/rabbit",
        "pages/squirrel"
      ]
    }, {
      "root": "moduleB",
      "pages": [
        "pages/pear",
        "pages/pineapple"
      ],
      "independent": true
    }
  ]
}

限制

独立分包属于分包的一种。普通分包的所有限制都对独立分包有效。独立分包中插件、自定义组件的处理方式同普通分包。

此外,使用独立分包时要注意:

  • 独立分包中不能依赖主包和其他分包中的内容,包括 js 文件、template、wxss、自定义组件、插件等(使用 分包异步化 时 js 文件、自定义组件、插件不受此条限制)
  • 主包中的 app.wxss 对独立分包无效,应避免在独立分包页面中使用 app.wxss 中的样式;
  • App 只能在主包内定义,独立分包中不能定义 App,会造成无法预期的行为;
  • 独立分包中暂时不支持使用插件。

注意事项

(1)关于 getApp()

与普通分包不同,独立分包运行时,App 并不一定被注册,因此 getApp() 也不一定可以获得 App 对象:

  • 当用户从独立分包页面启动小程序时,主包不存在,App也不存在,此时调用 getApp() 获取到的是 undefined。 当用户进入普通分包或主包内页面时,主包才会被下载,App 才会被注册。
  • 当用户是从普通分包或主包内页面跳转到独立分包页面时,主包已经存在,此时调用 getApp() 可以获取到真正的 App

由于这一限制,开发者无法通过 App 对象实现独立分包和小程序其他部分的全局变量共享。

为了在独立分包中满足这一需求,基础库 2.2.4 版本开始 getApp 支持 [allowDefault] 参数,在 App 未定义时返回一个默认实现。当主包加载,App 被注册时,默认实现中定义的属性会被覆盖合并到真正的 App 中。

示例代码:

  • 独立分包中
const app = getApp({allowDefault: true}) // {}
app.data = 456
app.global = {}
  • app.js 中
App({
  data: 123,
  other: 'hello'
})
console.log(getApp()) // {global: {}, data: 456, other: 'hello'}

(2)关于 App 生命周期

当从独立分包启动小程序时,主包中 App 的 onLaunch 和首次 onShow 会在从独立分包页面首次进入主包或其他普通分包页面时调用。

由于独立分包中无法定义 App,小程序生命周期的监听可以使用 wx.onAppShow,wx.onAppHide 完成。App 上的其他事件可以使用 wx.onError,wx.onPageNotFound 监听。

低版本兼容

在低于 6.7.2 版本的微信中运行时,独立分包视为普通分包处理,不具备独立运行的特性。

注意:在兼容模式下,主包中的 app.wxss 可能会对独立分包中的页面产生影响,因此应避免在独立分包页面中使用 app.wxss 中的样式。

文章来源:网络 版权归原作者所有,如涉及知识产权问题,请权利人联系我们,我们将立即处理.
标签: 小程序
专栏:   小程序
→少年不哭,站起來擼
文章 6 获得 0个赞 共 0个粉丝

推荐阅读 更多精彩内容

  • 官网版官网地址:https://chat.openai.com具体操作再搜一下其他人的吧(被删了)如果只是想体验一下可以直接点击下面免登版的。免登版地址:https://gpt.chatapi.art
    空空姬 空空姬 阅读 594
  • chatgpt官网:https://openai.com/blog/chatgpt/
  • ChatGPT的注册流程:打开ChatGPT官网入口chat.openai.com。1、国内是无法直接打开型前ChatGPT注册使用的,需要能够向外上网才可以,向外上网的工具有免费和收费的,下载安装配
    田井中律 田井中律 阅读 372
  • 国内可以用但是不能在国内注册,注册的时候是需要不同的手机号的。如果小伙伴在国内的话,是可以正常使用chatgpt镜像或者是官网里面操作的。但是官网操作的话就需要登录,登录就需要注册。【如何使用】cha
  • 一、关于处理工作表的快捷键总结1、插入新工作表 Shift+F11或Alt+Shift+F12、移动到工作簿中的下一张工作表 Ctrl+PageDown3、移动到工作簿中的上一张工作表 Ctrl+Pa
  • 1. 你新接手一个项目,既没有项目章程,也没有详细的项目计划,团队成员都对项目很不了解。管理层只是一个劲地要求尽快进入项目执行阶段。作为项目经理,你应该()A. 制定项目章程B. 制定项目计划C
  • 我跟老婆都是85牛,今年本命年。用她的话说:她是12月底的牛,就是吃草的,休息的,我是八九月的牛,就是忙着耕地的,命中注定了。她第一次跟我说的时候,我觉得她封建迷信,结婚十年后,我开始相信冥冥之中有天
    田井中律 田井中律 阅读 727
  • 怎么做好seo优化?SEO新手基础入门教程分享!一个好的SEO优化方法,需要团队的技术能力和凝聚力,SEO最根本的目的就是满足搜索引擎的规则,以达到排名前置的目的。常规seo是一个长期过程,所以做SE
  • 首先聊到私域的本质是什么?打个不恰当的比喻,私域流量就像一个自己的鱼塘,对于创业者而言其实就是个人微信好友。私域、社群、微信群有什么区别?私域是无序的一群人,就好比是一群在广场上散步的人。社群是有序的
  • 1.最近中国连锁经营协会(CCFA)和腾讯发布了一个叫《中国零售业公私域运营手册暨实施指引》的手册,因为封皮是蓝色的,也可以叫它小蓝书。这个小蓝书里讲了很多企业做私域运营的案例,关键是,它打破了从品牌