电子商务网站建设与规划视频,焦作网站制作,网站建设如何实现检索功能,上海的二字代码目录:
1、多模块概述#xff08;HAP、HSP、HAR#xff09;
HAR与HSP两种共享包的主要区别体现在#xff1a;
2、三类模块#xff1a;
3、创建项目#xff1a;项目名#xff1a;meituan
#xff08;1#xff09;创建Ability类型的Module#xff0c;编译后为HAP文件…目录:
1、多模块概述HAP、HSP、HAR
HAR与HSP两种共享包的主要区别体现在
2、三类模块
3、创建项目项目名meituan
1创建Ability类型的Module编译后为HAP文件
① 创建编译后为HAPentry类型的模块 waimai外卖
② 创建编译后为HAPfeatures类型的模块 qixingqixing
③ 创建编译后为HAPfeatures类型的模块 jiudianjiiudian扩展功能模块
2创建Library类型的Module
① 创建Shared Library动态共享库mylib01。编译后会生成一个以.hsp为后缀的文件即动态共享包HSPHarmony Shared Package。
② 创建Static Library静态共享库mylib02。编译后会生成一个以.har为后缀的文件即静态共享包HARHarmony Archive。
HAP
HSP
HAR
4-1 模块内跳转
① 在同一个HAP中的多个Page间跳转
② 在同一个HAP中的多个UIAbility间跳转
4-2 跨HAP模块跳转
1、从一个HAP跳转到另一个HAP
1为HAP模块添加所需要的模块依赖
2从外卖模块跨HAP跳转到骑行模块
2、使用HSP
① HSP模块中可以创建公共页面并导出从而供多个HAP来使用
② HSP模块中可以创建公共组件并导出从而供多个HAP来使用
③ HSP模块中可以创建公共对象和方法并导出从而供多个HAP来使用
3、使用HAR
① HAR不支持在配置文件中声明pages页面但是可以包含pages页面并通过命名路由的方式进行跳转
② HAR模块中可以创建公共组件并导出从而供多个HAP来使用
③ HAR模块中可以创建公共对象和方法并导出从而供多个HAP来使用 1、多模块概述HAP、HSP、HAR 模块分为两大类Ability分为Entry/Feature两大类 和 Library 分为Shared/Static两大类 严格来讲是分为四类。 不同类型模块编译打包后的类型不同 ① Ability分为Entry/Feature两大类-----》编译后后缀名为 .hap ② Library 分为Shared/Static两大类: Shared ---- 编译后后缀名为 .hsp Static ---- 编译后后缀名为 .har 注意编译后没有src/main目录 .ets -- .js --- .abc 上架后是.app文件 Ability类型的Module 用于实现应用的功能和特性。每一个Ability类型的Module编译后会生成一个以.hap为后缀的文件我们称其为HAPHarmony Ability Package包。HAP包可以独立安装和运行是应用安装的基本单位一个应用中可以包含一个或多个HAP包具体包含如下两种类型。 entry类型的Module应用的主模块包含应用的入口界面、入口图标和主功能特性编译后生成entry类型的HAP。每一个应用分发到同一类型的设备上的应用程序包只能包含唯一一个entry类型的HAP。feature类型的Module应用的动态特性模块编译后生成feature类型的HAP。一个应用中可以包含一个或多个feature类型的HAP也可以不包含。 Library类型的Module 用于实现代码和资源的共享。同一个Library类型的Module可以被其他的Module多次引用合理地使用该类型的Module能够降低开发和维护成本。Library类型的Module分为Static和Shared两种类型编译后会生成共享包。 说明 实际上Shared Library编译后除了会生成一个.hsp文件还会生成一个.har文件。这个.har文件中包含了HSP对外导出的接口应用中的其他模块需要通过.har文件来引用HSP的功能。为了表述方便我们通常认为Shared Library编译后生成HSP。 HAR与HSP两种共享包的主要区别体现在 共享包类型编译和运行方式发布和引用方式HAR HAR中的代码和资源跟随使用方编译如果有多个使用方它们的编译产物中会存在多份相同拷贝。 注意编译HAR时建议开启混淆能力保护代码资产。 HAR除了支持应用内引用还可以独立打包发布供其他应用引用。HSPHSP中的代码和资源可以独立编译运行时在一个进程中代码也只会存在一份。HSP一般随应用进行打包当前支持应用内和集成态HSP。应用内HSP只支持应用内引用集成态HSP支持发布到ohpm私仓和跨应用引用。 Static Library静态共享库。编译后会生成一个以.har为后缀的文件即静态共享包HARHarmony Archive。Shared Library动态共享库。编译后会生成一个以.hsp为后缀的文件即动态共享包HSPHarmony Shared Package。 面试题静态库与共享库的区别 静态库写只写一份其他Ability类型的module使用时将其复制一份过去。其他使用的模块都会拷贝一份会将项目的体积变大。 共享库只保存一份谁用调用就行。可以节省应用的体积。 2、三类模块
开发者可以根据实际场景所需的能力选择相应类型的包进行开发。在后续的章节中还会针对如何使用HAP、HAR、HSP分别展开详细介绍。
规格 HAP (Harmony Ability Package) HAR (Harmony Archive HSP (Harmony Shared Package 功能使用及适合场合分为entry和feature应用的功能模块可以独立安装和运行静态共享包编译态复用。 - 多包HAP/HSP引用相同的HAR时会造成多包间代码和资源的重复拷贝从而导致应用包膨大动态共享包运行时复用。 - 当多包HAP/HSP同时引用同一个共享包时可以避免HAR造成的多包间代码和资源的重复拷贝从而减小应用包大小支持在配置文件中声明UIAbility组件与ExtensionAbility组件√entry和feature都有界面 × har供其他模块使用 ×支持在配置文件中声明pages页面√ × har的module.json5中没有pages属性 √支持包含资源文件与.so文件如NDK用c编写√√√支持依赖其他HAR文件√√√支持依赖其他HSP文件√√√支持在设备上独立安装运行√× 支持应用内共享 或 发布后供其他应用使用× 当前仅支持应用内共享 注意HAR 可以在当前项目内使用也可以单独到处去供其他项目使用可以发布出去做成公共的第三方模块供其他应用使用。而HSP仅支持当前应用使用。 例如某跳动的某音可以使用头条的HAR 说明 HAR虽然不支持在配置文件中声明pages页面但是可以包含pages页面并通过命名路由的方式进行跳转。由于HSP仅支持应用内共享如果HAR依赖了HSP则该HAR文件仅支持应用内共享不支持发布到二方仓或三方仓供其他应用使用否则会导致编译失败。HAR和HSP均不支持循环依赖也不支持依赖传递。 3、创建项目项目名meituan
1创建Ability类型的Module编译后为HAP文件
① 创建编译后为HAPentry类型的模块 waimai外卖 构建模块 修改外卖页面首页 ② 创建编译后为HAPfeatures类型的模块 qixingqixing 如果不导出其他模块无法调用它 全局构建编译后 修改骑行页面首页 运行外卖waimai首页 运行骑行qixing首页 ③ 创建编译后为HAPfeatures类型的模块 jiudianjiiudian扩展功能模块 打包构建 修改酒店模块首页 总结 以上三个模块都打包为 HAP 都有独立的页面可以运行 2创建Library类型的Module
① 创建Shared Library动态共享库mylib01。编译后会生成一个以.hsp为后缀的文件即动态共享包HSPHarmony Shared Package。 build构建整个APP 启动mylib01发现不能独立运行只有HAP才能独立运行 创建一个(Static Library)静态共享库mylib02
② 创建Static Library静态共享库mylib02。编译后会生成一个以.har为后缀的文件即静态共享包HARHarmony Archive。 可以供应用本身也可以发布出去作为第三方库供其他所有的应用使用。 build全局构建编译 为了看起来方便可以修改视图为Ohos视图模型 HAP
HAPHarmony Ability Package是应用安装和运行的基本单元。HAP包是由代码、资源、第三方库、配置文件等打包生成的模块包
只有HAP可以独立使用
主要分为两种类型entry和feature
① entry应用的主模块作为应用的入口提供了应用的基础功能
② feature应用的动态特性模块作为应用能力的扩展可以根据用户的需求和设备类型进行选择性安装 注意应用程序包可以只包含一个基础的entry包也可以包含一个基础的entry包和多个功能性的feature包 不支持导出HAP中的接口和ArkUI组件供其他HAR/HSP模块使用 在HAP中创建函数、组件、类只能在当前这个函数中使用不能导出供HAR/HSP使用。
HAR/HSP可以导出供HAP使用。 HSP
HSPHarmony Shared Package是动态共享包可以包含代码、C库、资源和配置文件通过HSP可以实现代码和资源的共享。HSP不支持独立发布而是跟随其宿主应用的APP包一起发布与宿主应用同进程具有相同的包名和生命周期。 主要使用场景 ① 多HAP或者HSP共用的代码、资源可以使用HSP提高代码的可重用性和可维护性 ② 按需加载HSP包在运行时再按需加载 ③ 元服务分包及预加载 HAR
HARHarmony Archive是静态共享包可以包含代码、C库、资源和配置文件。通过HAR可以实现多个模块或多个工程共享ArkUI组件、资源等相关代码。 使用场景 ① 导出公共ArkUI组件或ts类/方法供当前应用的其它HAP和HSP使用 ② 作为二方库发布到OHPM私仓供公司内部其他应用使用 ③ 作为三方库发布到OHPM中心仓供其他应用使用 4-1 模块内跳转
① 在同一个HAP中的多个Page间跳转 多个页面公用同一个窗口 //模块内多个页面间跳转
router.pushUrl({url: pages/Details
})
② 在同一个HAP中的多个UIAbility间跳转 每个页面都有独立的窗口 //模块内多个UIAbility间跳转
let want: Want {deviceId: , //可选参数传空表示本设备bundleName: cn.tedu.myapp, //必需参数应用唯一标识moduleName: entry, //可选参数模块名称abilityName: ChatAbility, //必须参数UIAbility名称
}
let ctx getContext(this) as common UIAbilityContext
ctx.startAbility(want)4-2 跨HAP模块跳转
1、从一个HAP跳转到另一个HAP
每个HAP上架到应用商店都是可以根据客户端设备情况独立安装的如果希望跳转到其它模块必须在当前模块的编译配置中声明“多Hap同时部署Deploy Multi Hap” 1为HAP模块添加所需要的模块依赖 为外卖waimai模块添加所需依赖 同理对骑行qixing模块、酒店jiudian添加依赖 跨模块的多个页面也都有各自的运行时窗口 2从外卖模块跨HAP跳转到骑行模块 Button(1、跳转到另一个HAP模块骑行中的页面).onClick(_{// 不可能使用router跳转到另一个HAP中的界面因为module.json5中的pages是独立的// 只能使用startAbility(),启动另一个HAP的窗口加载它的页面let ctx getContext() as common.UIAbilityContextctx.startAbility({bundleName:com.tedu.meituan,moduleName:qixing, //想要跳转的模块名abilityName:QixingAbility,// parameters: 启动哪一个页面如果不写默认页面})}) 此时点击可以跳转到骑行模块的默认加载页面。但是有两个窗口。 2、使用HSP
① HSP模块中可以创建公共页面并导出从而供多个HAP来使用 HSP没有窗口HAP有窗口则可以使用URL 在HSP模块mylib01中创建AppCopyright.ets页面 分配路由地址此处可以不写但最好写上 Button(2、跳转到另一个HSP模块mylib01中的页面).onClick(_{// 不能使用startAbility()跳转,因为HSP没有UIAbility// 只能是使用router跳转router.pushUrl({url:bundle:com.tedu.meituan/mylib01/ets/pages/AppCopyright})}) 成功跳转到HSP指定的页面而且只有一个窗口 ② HSP模块中可以创建公共组件并导出从而供多个HAP来使用 1、HSP模块mylib01中创建components文件夹创建TitleBar.ets页面写组件 2、在HSP模块mylib01最外层导出组件 3、在HAP模块waimai中的最外层Index.ets中添加依赖 4、在HAP模块waimai中index.ets页面中使用来自HSP中的自定义组件 5、显示成功 ③ HSP模块中可以创建公共对象和方法并导出从而供多个HAP来使用 1、在HSP模块mylib01中创建components文件夹创建TitleBar.ets页面写公共方法 2、在HSP模块mylib01最外层导出 3、在HAP模块waimai中的最外层Index.ets中添加依赖 4、在HAP模块waimai中index.ets页面中调用来自HSP中的 3、使用HAR
① HAR不支持在配置文件中声明pages页面但是可以包含pages页面并通过命名路由的方式进行跳转 HAR里面没有pages,没有地址 为了看起来清晰修改目录结构 1、在HAR模块mylib02中声明页面 2、在HAR模块mylib02的最外层的Index.ets中导出上述页面此处可导出也可不导出 3、在HSP模块waimai的oh-package5中添加依赖 4、在HSP模块waimai中添加跳转按钮
手动添加路由地址 Button(4、调用另一个HAR模块mylib02中的也买你).onClick(_{router.pushNamedRoute({name:login,params:{}})})
② HAR模块中可以创建公共组件并导出从而供多个HAP来使用 与使用HSP的方式完全一样 1、在HAR模块mylib02中创建组件 2、在HAR模块mylib02最外层中导出组件 3、在HSP模块中添加依赖 4、在HSP模块中调用HSP的组件 ③ HAR模块中可以创建公共对象和方法并导出从而供多个HAP来使用 与使用HSP的方式完全一样 创建方法 在HAP中最外层中导出 在HSP中添加HAR依赖 在HSP中的页面调用HAP的方法 注意如果HAR导入的多个公共模块中有重名成员可以用as取别名 第三方库
HAR----mylib02
目前HSP包只能在应用内被其它模块引用 HAR共享包可以在当前项目中使用或者打包后发布为二方库/三方库供其它项目或其他开发者使用。
上架只需要上架HAP