如何从零到一开始搭建鸿蒙项目

大家好,我是simple。我的理想是利用科技手段来解决生活中遇到的各种问题

在之前的时间里,我自己也经历了好几个鸿蒙项目,也搭建了几个鸿蒙项目。所以我接下来说的项目搭建是按照鸿蒙的推荐以及个人习惯相结合搭建出来的项目,如果有什么不足的地方大家都可以指正。

0. 下载ecodev编辑器

1. 创建项目

创建一个空项目

填入新项目信息

tip: 设备类型为上线应用的时候,将会发布的平台。

2. 三层架构搭建

首先我们需要理解什么是三层架构,个人简单见解是:第一层是入口层,这里是不同设备类型(如手机、手表、折叠屏等)的入口,第二层是基础特性层,基础特性层是各种小组件、页面,供入口引用,第三层是公共能力层,里面放置一些工具库、公共配置,供入口层或特性层引用。

三层工程结构如下:

  • commons(公共能力层):用于存放公共基础能力集合(如工具库、公共配置等)。commons层可编译成一个或多个HAR包或HSP包,只可以被products和features依赖,不可以反向依赖。
  • features(基础特性层):用于存放基础特性集合(如应用中相对独立的各个功能的UI及业务逻辑实现等)。各个feature高内聚、低耦合、可定制,供产品灵活部署。不需要单独部署的feature通常编译为HAR包或HSP包,供products或其它feature使用。需要单独部署的feature通常编译为Feature类型的HAP包,和products下Entry类型的HAP包进行组合部署。features层可以横向调用及依赖common层,同时可以被products层不同设备形态的HAP所依赖,但是不能反向依赖products层。
  • products(产品定制层):用于针对不同设备形态进行功能和特性集成。products层各个子目录各自编译为一个Entry类型的HAP包,作为应用主入口。products层不可以横向调用。

3. 创建公共层

在项目根目录上创建文件夹为commons,用于放置公共能力层模块,可以选择har包或者是hsp包,在这里我们选hsp包。

这里可以给模块命名,并且可以选择可以使用该模块的设备类型。

4. 创建特性层

与第三步相同,在项目根目录上创建文件夹为features,用于放置基础特性层模块,可以选择har包或者是hsp包,在这里我们依旧选hsp包。

5. 创建入口层

在项目根目录上创建文件夹为products,用于放置产品模块,我们可以entry模块改名为phone(改名时切记应该是给模块改名,而不是单纯给文件夹改名,如下图),然后将其拖动到products里面。

此时如果还需要创建别的设备类型模块,如下。

这样三层基本已经创建完毕了。

6. 架构关联

当我们需要在phone里面使用basic的工具,我们此时打开phone/oh-package.json5文件,添加以下内容,然后点击sync now同步即可。需要使用到的包需要引入到basic/Index.ets文件下,或者从basic/xx/xx.ets文件导出。

json 复制代码
"dependencies": {
  "basic": "file:../../commons/basic",
}

7. 小提示

我觉得三层架构是针对比较大型的项目搭建,正常的项目可以使用一层架构或者两层架构就可以满足了。鸿蒙目前正在迅速迭代中,开发一个项目的时候最好不要频繁更换ide版本,不然可能需要会有各种小彩蛋。

如果有需要项目的人可以看一下git仓库。

bash 复制代码
git clone https://gitee.com/simple-lau/harmony_template.git
相关推荐
g_z_x_1 小时前
鸿蒙 ArkTS 实战:Quiz Arena 从状态建模到交互闭环完整解析
华为·交互·harmonyos
用户0934077735141 小时前
HarmonyOS WPS Open SDK 实践:最小打开闭环与 enableEdit 分支处理
typescript·harmonyos
绝世番茄1 小时前
鸿蒙原生 ArkTS 布局方式之 Stack 悬浮按钮布局(HarmonyOS NEXT / API 24)
华为·harmonyos·鸿蒙
2301_768103492 小时前
HarmonyOS趣味相机实战第5篇:CameraKit资源释放、PixelMap生命周期与预览黑屏排查
性能优化·harmonyos·arkts·camerakit·pixelmap
花开彼岸天~2 小时前
鸿蒙应用开发实战【01】— 号码助手项目概述与开发环境搭建
华为·harmonyos·鸿蒙系统
不才难以繁此生2 小时前
HarmonyOS 图片列表滑动卡顿怎么办:中式美食菜谱封面怎么做占位、缓存和失败兜底
harmonyos·image·arkui·中式美食·列表性能
心中有国也有家3 小时前
AtomGit Flutter 鸿蒙客户端:零外部资源的应用打包策略
android·javascript·flutter·华为·harmonyos
心中有国也有家3 小时前
AtomGit Flutter 鸿蒙客户端:为 E-Brufen 注入情感节律的文案设计哲学
javascript·学习·flutter·华为·harmonyos
最爱老式锅包肉3 小时前
HarmonyOS技术精讲-Camera Kit(相机服务)第3篇:实现相机预览功能
数码相机·华为·harmonyos
youtootech4 小时前
HarmonyOS《柚兔学伴》项目实战02-多模块架构设计与 HSP/HAR 模块化
华为·harmonyos