小程序开发设计如何实现跨平台开发与管理满足企业多元化需求
426
2024-06-30
独立分包是小程序中一种特殊类型的分包,可以独立于主包和其他分包运行。从独立分包中页面进入小程序时,不需要-主包。当用户进入普通分包或主包内页面时,主包才会被-。
开发者可以按需将某些具有一定功能独立性的页面配置到独立分包中。当小程序从普通的分包页面启动时,需要首先-主包;而独立分包不依赖主包即可运行,可以很大程度上提升分包页面的启动速度。
一个小程序中可以有多个独立分包。
假设小程序目录结构如下:
├── app.js ├── app.json ├── app.ftss ├── moduleA │ └── pages │ ├── rabbit │ └── squirrel ├── moduleB │ └── pages │ ├── pear │ └── pineapple ├── pages │ ├── index │ └── logs └── utils 已复制代码
开发者通过在app.json
的subpackages
字段中对应的分包配置项中定义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、ftss、自定义组件、插件等(使用 分包异步化 时 js 文件、自定义组件、插件不受此条限制)
主包中的 app.ftss 对独立分包无效,应避免在独立分包页面中使用 app.ftss 中的样式;
App 只能在主包内定义,独立分包中不能定义 App,会造成无法预期的行为;
独立分包中暂时不支持使用插件。
与普通分包不同,独立分包运行时,App 并不一定被注册,因此 getApp() 也不一定可以获得 App 对象:
当用户从独立分包页面启动小程序时,主包不存在,App也不存在,此时调用 getApp() 获取到的是 undefined。 当用户进入普通分包或主包内页面时,主包才会被-,App 才会被注册。
当用户是从普通分包或主包内页面跳转到独立分包页面时,主包已经存在,此时调用 getApp() 可以获取到真正的 App。
由于这一限制,开发者无法通过 App 对象实现独立分包和小程序其他部分的全局变量共享。
在 App 未定义时返回一个默认实现。当主包加载,App 被注册时,默认实现中定义的属性会被覆盖合并到真正的 App 中。
示例代码:
独立分包中
const app = getApp({allowDefault: true}) // {}app.data = 456app.global = {} 已复制代码
app.js 中
App({ data: 123, other: 'hello'})console.log(getApp()) // {global: {}, data: 456, other: 'hello'} 已复制代码
当从独立分包启动小程序时,主包中 App 的 onLaunch
和首次onShow
会在从独立分包页面首次进入主包或其他普通分包页面时调用。
由于独立分包中无法定义 App,小程序生命周期的监听可以使用ft.onAppShow
,ft.onAppHide
完成。App 上的其他事件可以使用ft.onError
,ft.onPageNotFound
监听。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~