当前位置: 首页 > wzjs >正文

dede中英文网站切换百度广告点击软件

dede中英文网站切换,百度广告点击软件,信访举报网站建设情况,黄永玉的艺术人生【HarmonyOS】HAR和HSP循环依赖和依赖传递问题详解 一、前言 1、循环依赖是什么? 这里特指依赖包的关系。例如:包A,被B、C引入依赖,BCA之间又互相引入依赖。 2、依赖传递又是什么? 这里特指依赖包的关系。例如&…

【HarmonyOS】HAR和HSP循环依赖和依赖传递问题详解

一、前言

1、循环依赖是什么?
这里特指依赖包的关系。例如:包A,被B、C引入依赖,BCA之间又互相引入依赖。

2、依赖传递又是什么?
这里特指依赖包的关系。例如:包A,依赖B,B又依赖C,A如果可以调用C,那就是依赖传递。

3、HAR和HSP是什么?
HAR和HSP,都是HarmonyOS项目中的SDK包类型。

HAR(Harmony Archive) 是静态共享包。
HSP(Harmony Shared Package) 是动态共享包。

HAR 是编译时打包进依赖 HAP、启动时已在内存可直接调用、加载效率高但可能导致包膨大的静态包,而 HSP 是运行时按需加载、需额外操作但能避免重复拷贝的动态共享包。

对比项HARHSP
打包方式打包时全部打进引用方的包中动态共享包,运行时复用
加载机制编译时被打包进依赖它的HAP,应用启动时已在内存,后续可直接调用运行时按需加载,需额外查找、加载和初始化
加载效率高,无需额外加载步骤低,额外操作消耗时间
适用场景被引用次数较少等场景下加载优势明显适用于被大量HAP引用,可避免重复拷贝

二、HAR不支持依赖传递,也不支持循环依赖

在这里插入图片描述
如上图所示,这就是典型的循环依赖和依赖传递场景。
1被2依赖,2反过来又依赖1,2被3依赖,3又依赖1。

在鸿蒙中HAR包是不允许循环依赖,如果这么做,会报错。并且也不支持依赖传递,HAR1想直接使用HAR3的资源,只能去引用HAR3,才可以直接使用其资源。

通过将HAR包间的依赖关系转移至HAP/HSP中配置,利用变量动态import实现依赖解耦,避免循环依赖问题。

动态import可实现依赖解耦,解决循环依赖问题:

当遇到循环依赖时,如果只是本地的HAR包之间,可使用动态import可实现依赖解耦。
将上图的依赖关系,改成如下方式,通过动态修改
在这里插入图片描述

1、原始依赖场景
HAP依赖HAR1,HAR1依赖HAR2(通过变量动态import)。

// har1的oh-package.json5"dependencies": { "har2": "file:../har2" }// har1的build-profile.json5"runtimeOnly": { "packages": ["har2"] }

2、转移后配置
将har1对har2的依赖转移至HAP中:

// HAP的oh-package.json5"dependencies": { "har1": "file:../har1", "har2": "file:../har2" }// HAP的build-profile.json5"runtimeOnly": { "packages": ["har1", "har2"] }

har1不再配置对har2的依赖,通过变量动态import调用har2的接口:

// har1的Calc.etslet harName = 'har2';import(harName).then((ns) => ns.addHar2(4, 5));
注意点

1、被转移依赖的HAR之间只能通过变量动态import,不能有静态import或常量动态import。转移依赖时,dependencies和runtimeOnly依赖配置要同时转移

2、转移依赖的整个链路上只能有HAR,不能跨越HSP转移。即:HAP->HAR1->HAR2->HSP->HAR3->HAR4,HAR1对HAR2的依赖可以转移到HAP上,HAR3对HAR4的依赖可以转移到HSP上。但是,不能将HAR3或HAR4转移到HAP上。

3、引用其他工程模块、远程包或集成HSP时,需保证useNormalizedOHMUrl配置一致(均为truefalse),避免运行时报错(运行时报错:Cannot find dynamic-import module library。)。

三、HSP不支持依赖传递,也不支持循环依赖

与HAR一致,HSP也不支持依赖传递和循环依赖。

不支持HSP循环依赖:
例如有三个HSP,HSP-A、HSP-B和HSP-C,循环依赖指HSP-A依赖HSP-B,HSP-B依赖HSP-C,HSP-C又依赖HSP-A。不支持循环依赖会报错。

不支持HSP依赖传递:
例如有三个HSP,HSP-A、HSP-B和HSP-C,依赖关系是HSP-A依赖HSP-B,HSP-B依赖HSP-C。不支持传递依赖指HSP-A可以使用HSP-B的方法和组件,但是HSP-A不能直接使用HSP-C的方法和组件。

并且HSP不支持转移依赖。即:HAP->HSP1->HSP2->HSP3,这里的HSP2和HSP3不能转移到HAP上面。

如果两个HSP相互依赖,使用对方的组件。可修改为将需要共用的组件抽离出来,然后放到一个共享包中使用。

http://www.dtcms.com/wzjs/107444.html

相关文章:

  • 互联网网站建设营销做销售有什么技巧和方法
  • 有人拉我做彩票网站方象科技的企业愿景
  • 哪里有卖自己做的网站成都网站建设制作公司
  • 做网站的总要求上门做网站需要多少钱 都包括什么
  • 设计 p网站百度宣传推广费用
  • 提高企业网站的访问率网络营销课程介绍
  • 宿迁集团网站建设成都门户网站建设
  • 安卓app做网站外壳搜索引擎排名影响因素有哪些
  • 杭州市规划建设委员会网站武汉今日新闻头条
  • 如何做淘宝客的网站电子商务营销策略有哪些
  • wordpress 主题安装 ftp关键词优化排名查询
  • 手机网站设计与实现是什么被国家禁止访问的网站怎么打开
  • 用花生壳免费域名做公司网站新媒体
  • 做一家开发网站的公司免费的推文制作网站
  • 广州专业网站建设企业手游免费0加盟代理
  • 小型企业网站建设百度网址是多少 百度知道
  • 洛阳做天然气公司网站下载优化大师app
  • 竞猜网站开发多少钱百度手机端排名如何优化
  • 天津 网站建设怎样淘宝seo排名优化
  • 衡水网站设计网络营销百度百科
  • 做粤菜的视频网站百度自媒体怎么注册
  • 国外域名交易网站百度竞价推广是什么工作
  • 虾皮跨境电商可靠吗优化设计六年级上册数学答案
  • 建设网站 无法显示图片搜索引擎优化案例
  • 手机电商平台怎么做的正规seo大概多少钱
  • 网站开发需要文章写的好吗网络推广是什么职业
  • 建设银行郑州市自贸区分行网站独立站seo怎么做
  • 织梦对比wordpress网站seo优化方法
  • 响应式网络网站源码百度竞价排名广告定价
  • 可靠的专业网站建设平台qq空间刷赞网站推广