一、开发模式
目前官方提供了两种开发模式:
1.基于ArkTS来进行声明式的ui开发规范
- 采用ArtTS语言来开发我们项目。
2.类web的开发模式
- 采用传统前端html+css+js的开发模式
- 做鸿蒙开发编程就像是学习一个新的框架。
目前官方主推第一种ArkTS的开发模式。这种模式内容会更丰富,开发体验会更好
- Stage模型:目前推荐大家使用这个模型来开发我们项目提供内容更加丰富。官方核心维护的模型。这个模型里面提供更加丰富的api和kit能力
- FA(FeatureAbility)模型:目前主要采用js的方式来开发项目。虽然目前还在维护。但是提供的开发内容相对 于stage模型会更少
二、创建项目
安装工具的事项:
- 目前最新的beta版本工具,按照步骤一步一步往下运行就安装好了工具。
- Node版本目前尽量用18版本,node工具的镜像尽量用华为的镜像
目录结构:
- AppScope:这个代表整个app配置。一般在最后打包的时候使用
- entry:这个代表项目中的一个模块。这个模块一般作为程序的主模块/一个程序可以有很多模块
- oh_modules:这个文件夹相当于以前前端工程后里面node_modules,可以存放自己模块以来,也以来外部的模块
- entry/main:里面就是开发需要用到所有内容
- entry/main/ets:一般用于开发源代码。包括页面、组件、路由等等
- entry/main/resources:这个文件夹里面存放的是项目需要资源文件。类似于前端工程assets文件夹
自己额外可以创建项目文件夹 main/ets
- apis:这个文件夹用于后续网络请求封装代码
- utils:这个用于封装项目开发工具
- 1ibs:用于存放第三方的插件
- view:这个文件夹里面存放组件
- pages:存放开发的页面
- viewmodel:存放数据和约束
三、编写程序
ArkTS最大的特点就是基于TS的开发规则来设计的一种开发语言。 里面涵盖了TS所有的规则。以及包含了ES5\6的语法规则。 开发鸿蒙项目:
- 相当于在大前端基础上继续学习一个新的框架和开发模式
- 采用声明式的开发规范,在开发中结合ArkUI来进行页面构造布局,并使用封装好属性来进行页面样式渲染和布局优化。
学习过程中你们频繁的用到ArkUI,比如
Text("这是文本组件")
Button("").onclick(()=>(})
自定义组件
@component
export struct Header(
build(){
Column(){
Text("Header组件")
}
.width("1008")
.height("1008")
}
}
四、项目的运行
项目的运行有三种方式:
- 预览器的模式:这个方案目前最方便最简单的方式。开发工具默认提供了预览器,写完直接就热更新前期开发可以采用预览器来实现,到了后面要增加更多功能到项目中,我们需要采用模拟器或者真机来调试,预览器有些api无法进行调试。
- 模拟器的方式来开发:模拟器是开发项目必须用到设备。目前这个beta中,模拟器需要申请。目前官方只提供手机端的模拟器。后续会提供更多的平台。 后期模拟器可以提供很多种组合设备,比如手机+平板、手机+tV、手机+手表等等
3. 提供真机调试:目前开发的版本HarmonyOSNext版本,所以要求华为设备,并搭载了最新鸿蒙next系统。普通鸿蒙4.0或者4.2无法支持我们应用运行。要求真机必须开启usb调试模式,在用手机和电脑链接(有线、无线》在开发工具中识别手机。其中还会涉及到签名信息等等。
代码才可以放在真机上面运行。
五、ArkTS介绍
- JS:属于前端浏览器端语言,若类型语言,灵活,功能强大
- TS:TS是微软设计出来的一门编程语言,是JS这门语言超集。涵盖了JS核心的es5、es6的内容。增加静态检查,类型推断等等,可以让开发过程中更加严谨。减少错误
ArkTS:鸿蒙官方主推的开发语言,高级编程语言。在TS基础上进行了扩展。推出了全新声明式的开发规范。相当于基于TS开发规则,又进行封装。将核心的内容封装起来采用声明式开发模式。ArkTS编程规范会比TS更加严格。完全按照强类型语言的规则来要求。我们创建的文件后缀ets结尾的文件。这个文件是一个ArkTS文件。包含:
- 装饰器:ArkTS将装饰器进行了封装,提供了各种装饰器来强化我们的组件。有类的装饰器、属性装饰器、方法装饰器。实现不同的业务功能。
- struct来定义一个组件,这个组件内部开发模式严格采用面向对象的开发规则。类、属性、行为等等这些概念,this的使用也是必须的。
- 可以在ArkTS中自定义组件,也可以使用官方提供系统组件(ArkUI)提供的。
- 还可以给组件绑定事件,还提供完整的事件机制。
六、国际化配置
在resource/base/element/string.json
base下配置是基础配置,必须有,默认在base下配置成功,才会匹配中英文中对应的字段
{
"string": [
{
"name": "title",
"value": "title"
}
]
}
在resource/zh_US/string.json
{
"string": [
{
"name": "title",
"value": "title"
}
]
}
在resource/zh_cn/string.json
{
"string": [
{
"name": "title",
"value": "标题"
}
]
}
Text($r("app.string.value"))
resource/media 文件夹下一般存放图片资源
resource/profile/main_pages 存放路由配置