有什么网站帮做邀请函设计的,网站建设杭州缘择低价,网站规划怎么做,结构优化是什么意思1.HarmonyOS 模块化设计 模块化设计文档 应用程序包开发与使用文档
1.1. 概述 组件化一直是移动端比较流行的开发方式#xff0c;有着编译运行快#xff0c;业务逻辑分明#xff0c;任务划分清晰等优点#xff0c;HarmonyOs组件化的使用#xff0c;有利于模块之间的解…1.HarmonyOS 模块化设计 模块化设计文档 应用程序包开发与使用文档
1.1. 概述 组件化一直是移动端比较流行的开发方式有着编译运行快业务逻辑分明任务划分清晰等优点HarmonyOs组件化的使用有利于模块之间的解耦及大型项目的共同开发与Android端的组件化相比HarmonyOS的组件化可以说实现起来就颇费一番周折因为HarmonyOS经过更新迭代之后最新的开发方式已经和之前兼容AOSP阶段有着很大的区别以及采用全新的ArkTs语言的开发方式想实现组件化就需要另谋途径。 在以往的Android组件化实现中我们直接可以在gradle里进行自定义配置相关参数执行application和library以及其他的参数信息来实现一个可运行模块和依赖模块的动态转换这是非常方便的但是在HarmonyOS中构建文件中除了使用系统配置的之外是不支持自定义的起码当前是不支持的也就是说我们无法通过在构建里来实现组件化运行的切换。 这就在一定程度上阻碍了组件化的配置虽然我们可以按照动态包的模式拆分出独立的业务模块形成模块化开发但是在业务逻辑复杂的项目很多的模块同时编译运行无疑来说是耗时的远远比不上组件化方式的开发效率基于此能够探索出组件化的可行性确实是很有必要的。
1.2. 组件化好处 1提高代码复用性组件化允许将应用程序的不同功能模块化使得这些模块可以在不同的项目中重复使用从而提高开发效率并减少重复工作。 2 降低组件间的耦合通过组件化的规则将代码拆分成不同的模块实现高内聚、低耦合使得代码更易于维护降低了模块间的依赖减少了潜在的错误和问题。 3提升开发效率组件化使得开发团队可以并行工作每个团队可以专注于自己的组件独立开发和维护这样可以加快开发进度提高整体的开发效率。 4 改善代码质量组件化鼓励开发者编写清晰、模块化的代码有助于提高代码的可读性和可维护性从而提升代码质量。 5 便于扩展和迭代组件化架构使得添加新功能或改进现有功能变得更加容易有助于快速响应市场变化和用户需求。 6 隔离技术栈不同的组件可以使用不同的技术栈而不会相互影响使得技术选型更加灵活。 7 独立开发/维护/发布组件化允许每个组件独立开发、维护和发布使得更新和迭代更加灵活。 8提高编译/构建速度组件化使得编译和构建过程更加高效因为只需要编译和构建相关的组件而不是整个项目。 9 管控代码权限组件化允许更好地控制代码权限通过将代码分散到不同的仓库中可以限制对特定组件的访问和修改。 10管理版本变更组件化使得管理版本变更变得更加容易因为每个组件都有明确的版本可以更容易地跟踪和控制版本更新。 组件化是解决单一工程架构开发中问题的有效方法它通过将大型项目拆分成更小、更易于管理的模块提高了开发效率和代码质量。然而组件化也带来了一些挑战如组件粒度的划分、组件间依赖关系的管理以及跨技术栈通信等。为了实现高质量的组件化项目需要遵循一些实践规范和原则如组件拆分原则、组件间依赖管理以及质量保障措施。
1.3. 项目的目录结构 其中features目录下是组件/模块包含不同的功能分区entity是项目的主入口也就是hap包commons目录下有3个har组件分别是utils:所有的帮助类、uicomponents项目中需要用到的自定义UI组件等、RouterModule:项目的路由承载了整个项目跨组件通信的能力
1.4. 项目创建
1首先创建一个项目工程点击开发工具DevEco-Stdio的File选项选择New然后点击Create Project。 2选择创建一个EmptyAbility然后直接下一步创建工程。 3工程主要包括一个entry模块可以理解为Android的app主模块。
1.5. 公共库创建及使用har 创建公共库Common组件。 1在工程目录中单机鼠标右键选择New选项然后在弹出的页面中选择Module。 2在弹出的页面中选择创建一个静态库Static Library。 3然后点击Next修改静态库的名称为myHar。 4点击完成后编译器会自动在项目的根目录的build-profile.json5文件中添加myHar模块。
5添加项目依赖myHar作为公共库需要提供给其他模块使用这里以entry为例添加模块依赖如下图所示。
{name: entry,version: 1.0.0,description: Please describe the basic information.,main: ,author: ,license: ,dependencies: {// 此处也可以是以当前oh-package.json5所在目录为起点的相对路径。//myhar: file:./libs/myHar.har,//此处也可以是以当前oh-package.json5所在目录为起点的相对路径myhar: file:../myHar}
}5至此一个公共库myHar就创建完成了。
1.6. 功能模块创建使用hsp 一个功能复杂庞大的app不仅有公共模块还有许多子模块构建而成。创建流程如下 1在工程目录中单机鼠标右键选择New选项然后在弹出的页面中选择Module。 2在弹出的页面中选择创建一个共享库Shared Library。 3然后点击Next修改静态库的名称为loginLib。 4点击完成后编译器会自动在项目的根目录的build-profile.json5文件中添加loginLib模块。 4添加项目依赖login作为子模块需要被entry依赖调用添加模块依赖如下图所示。 5到目前为止子模块也创建完成。
1.7. 模块路由跳转 前面创建分别创建了公共库和子模块如何从主模块entry跳转到子模块loginLib或者子模块之间互相跳转呢 1HarmonyOs在页面跳转时提供了router实现路由跳转。需要跳转的目标页面必须满足两个条件Entry修饰struct 和路由注册。被Entry修饰的struct才是一个独立页面。同时需要在main_pages.json中注册路由。 2在myHar中定义完整路径。不同子模块都会依赖公共静态库myHar。然后在myHar中定义目标页面的全路径。文档中心 全路径主要由三部分组成。分别是bundle: 代表模版。 然后是 包名 com.szy.mymodule。最后是模块名目标页面的全路径。
export class PageConstant {static readonly LOGIN_PAGE: string bundle:com.szy.mymodule/loginLib//ets/pages/Index.ets;
}3使用export关键字导出 ConstantRouter类提供给其他模块调用。 4entry引入ConstantRouter类调用类中定义的路由。
import { router } from kit.ArkUI;
import { RouterConstant } from myhar;
import { BusinessError } from kit.BasicServicesKit;
import { common } from kit.AbilityKit;
import { RouterParams } from zzslib
Entry
Component
struct Index {State message: string 跳转;build() {RelativeContainer() {Text(this.message).id(HelloWorld).fontSize(50).fontWeight(FontWeight.Bold).alignRules({center: { anchor: __container__, align: VerticalAlign.Center },middle: { anchor: __container__, align: HorizontalAlign.Center }}).onClick(() {let bundleName (getContext(this) as common.UIAbilityContext).applicationInfo.name;router.pushUrl({// url:bundle:com.szy.mymodule/library/src/main/ets/pages/Indexurl: bundle:com.szy.mymodule/library/ets/pages/Index//url: bundle:${bundleName}/library/src/main/ets/pages/Index}).then(() {console.log(push page success);}).catch((err: BusinessError) {console.error(pushUrl failed, code is err.code , message is err.message);})})}.height(100%).width(100%)}
}