前端的春天!拥抱HarmonyOS4.0

前言

最近刚刚了解到鸿蒙开发,发现鸿蒙开发4.0使用的是ArkTs,据了解鸿蒙NEXT将在明年(2024年)不再兼容安卓(非常期待),对于有一定基础TypeScript且是大前端方向的我而言,产生了浓厚的学习兴趣,其实我心里暗自想的是前端的春天来了💕,以下是本人学习过程中做的一些笔记,包括实用插件和一些注意事项。

安装 DevEco Studio

这里推荐大家去 HarmonyOS 观看 安装教程,笔者不在此赘述

一、项目目录

1.工程级目录

工程级目录.png

 其中详细如下:

  • AppScope 中存放应用全局所需要的资源文件。
  • entry 是应用的主模块,存放HarmonyOS应用的代码、资源等。
  • oh_modules 是工程的依赖包,存放工程依赖的源文件。
  • build-profile.json5 是工程级配置信息,包括签名、产品配置等。
  • hvigorfile.ts 是工程级编译构建任务脚本,hvigor是基于任务管理机制实现的一款全新的自动化构建工具,主要提供任务注册编排,工程模型管理、配置管理等核心能力。
  • oh-package.json5 是工程级依赖配置文件,用于记录引入包的配置信息。

在 AppScope,其中有resources文件夹和配置文件app.json5。AppScope>resources>base中包含element和media两个文件夹。

AppScope目录.png

  • 其中element文件夹主要存放公共的字符串、布局文件等资源。我们可以在这个文件夹下定义样式的具体数值,例如我想定义我的背景颜色为某个颜色,我可以在该目录下的color.json中这样的定义
 

css

复制代码

{ "color": [ { "name": "start_window_background", "value": "#FFFFFF" }, { "name": "page_background", "value": "#F1F3F5" } ] }

以上代码为您展示了,一个name为page_background的字段,它的value值为#F1F3F5,意味着我可以在页面任意地方用以下形式使用

 

bash

复制代码

.backgroundColor($r('app.color.page_background'))

定义其他全局变量与此方法类似,请自行尝试。

  • media存放全局公共的多媒体资源文件。例如我们可以在这存放我们开发所需的icon、图片、语音等等。

2.模块级目录

模块级目录.png

entry > src 目录中主要包含总的main文件夹,单元测试目录ohosTest,以及模块级的配置文件。

entry.png

 进入 src>main>ets 目录中,其分为entryabilitypages两个文件夹。

  • entryability存放ability文件,用于当前ability应用逻辑和生命周期管理。
  • pages存放UI界面相关代码文件,初始会生成一个Index页面。

![[ets子文件展示.png]]

前期,在此目录下 新增2 个文件夹:commonview

  • common用于存放通用数据或约束
  • view存放我们写的自定义组件

ets目录.png

resources目录下存放模块公共的多媒体、字符串及布局文件等资源,分别存放在elementmedia文件夹中。

二、三个重要配置

1.app.json5

AppScope>app.json5 是应用的全局的配置文件,用于存放应用公共的配置信息。

app.json5.png

2.module.json5

entry>src>main>module.json5 是模块的配置文件,包含当前模块的配置信息。

module.json5.png

3.main_pages.json

src/main/resources/base/profile/main_pages.json 文件保存的是页面page的路径配置信息,所有需要进行路由跳转的page页面都要在这里进行配置。

main_pages.json.png

三、插件分享

以下涉及到无法在编辑器中下载的插件我已放在此 链接 提取码:undx

1.Chinese

汉化插件,让国人开发者更加如鱼得水

2.Atom Material File Icons

提供文件和文件夹图标支持,让你的项目看的更加赏心悦目

Atom Material File Icons.png

3.One Dark theme

一款暗色系主题插件,非常适合在晚上偷偷卷代码

One Dark theme.png

4.Material Theme UI

一款多色系主题插件,自2021年后需要收费使用,本节文末提供下载链接

Material Theme UI.png

5.Rainbow Brackets

括号匹配彩虹色

Rainbow Brackets.png

6.Indent Rainbow

代码缩进提供色彩支持,非常适合控制代码格式

Indent Rainbow.png

四、Hello Harmony

1.预览

快速在本地预览已编写的页面

预览.png

2.模拟器

通过模拟器预览和调试页面

1)安装模拟器

注:创建过程中如有安装依赖等提示,按照提示安装即可

下载设备.png

创建模拟器1.png

创建模拟器2.png

创建模拟器3.png

创建模拟器4.png

2)使用设备

使用设备1.png

使用设备2.png

使用设备3.png

运行成功!

使用设备4.png

五、组件

1.装饰器

形如@Component@Entry通过 @+关键字 组成的叫装饰器,它内置了一些方法,通过这类装饰器可以快速构建页面

2.自定义组件

自定义组件: 通过组合基础组件,封装得到的可复用,可组合的UI单元

ArkTS 通过struct声明组件名,并通过@Component@Entry装饰器,来构成一个自定义组件。

build函数内部进行相应的声明式UI描述

这里以待办清单为例

待办清单item.png

 

scss

复制代码

@Component export default struct ToDoItem{ private content?: string; @State isComplete: boolean = false; @Builder labelIcon(icon: Resource) { Image(icon) .objectFit(ImageFit.Contain) .width("28vp") .height("28vp") .margin("20vp") } build() { Row() { if (this.isComplete) { this.labelIcon($r('app.media.ic_ok')); } else { this.labelIcon($r('app.media.ic_default')); } Text(this.content) .fontSize("20fp") .fontWeight(500) .opacity(this.isComplete ? 0.4: 1) .decoration({ type: this.isComplete ? TextDecorationType.LineThrough : TextDecorationType.None }) } .borderRadius(24) .backgroundColor($r('app.color.start_window_background')) .width('93.3%') .height("64vp") .onClick(() => { this.isComplete = !this.isComplete; }) } }

以上代码为您展示了待办清单中的 待办项子组件(这里并未展示在父组件中使用和传值,但实际是通过在父组件中导入并向该组件传递值的)

3.容器组件

容器组件: 描述多个组件间布局关系的组件

1)Row

行布局容器:横布局为横向的空间。如图为从左到右依次排列Image Text组件

Row行布局.png

2)Column

列布局:列布局为竖向的空间。如图为从上到示依次排列title todoitem组件(X3)

Column列布局.png

六、路由跳转

我这里以pages目录下的ToDoListPage为例

1.页面编写

打开Index.ets,导入router方法

 

javascript

复制代码

import router from '@ohos.router';

在主页面里添加一个按钮并定义点击事件

 

css

复制代码

Button('跳转待办事项').onClick(()=>{ router.pushUrl({ url:"pages/ToDoListPage" }) })

完整代码如下:

 

typescript

复制代码

import router from '@ohos.router'; @Entry @Component struct Index { @State message: string = 'Hello Harmony' build() { Row() { Column() { Text(this.message) .fontSize(50) .fontWeight(FontWeight.Bold) .fontColor('blue') Button('跳转待办事项').onClick(()=>{ router.pushUrl({ url:"pages/ToDoListPage" }) }) } .width('100%') } .height('100%') } }

2.页面装配

以上方法定义好之后,心急的小伙伴已经点击按钮了吧?但是会惊讶的发现居然没有跳转,这是为什么呢?答案就在entry>src>main>resource>base>profile>main_pages.json 中,当我们写好页面与方法,我们需要在此文件中装配页面才能完成路由跳转。

打开main_pages.json在下方添加

 

css

复制代码

{ "src": [ "pages/Index", "pages/ToDoListPage" ] }

接下来就可以点击按钮啦

效果就是这样滴

路由展示.gif

总结

本文为您讲述了使用DevEco Studio编译器入门开发鸿蒙,重点涉及到其使用方法和提效插件,帮助您快速入门鸿蒙系统4.0,希望本文能帮助您对鸿蒙开发有一个基本认识。欢迎大家来纠正错误。

  • 21
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜栩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值