构建第一个ArkTS应用:Hello World之旅
# 构建第一个ArkTS应用:Hello World之旅
在鸿蒙应用开发的领域中,ArkTS语言为我们提供了强大而便捷的开发方式。今天,就让我们一起踏上构建第一个ArkTS应用——Hello World的奇妙旅程。
## 一、创建ArkTS工程
1. 首先,我们要使用DevEco Studio这个强大的开发工具。启动DevEco Studio后,通过点击“Create Project”来创建工程。如果已经打开了一个工程,也可以在菜单栏选择“File > New > Project” 。
2. 接着,选择“Application”类型来创建项目(本文以该类型为例 )。这里有“Ability”选项,我们选择“Empty Ability” ,然后点击“Next”。如果想要进行Native相关工程的开发,还可以选择“Native C++” ,更多模板的使用说明可以查阅相关工程模板介绍。
3. 进入配置工程界面后,“Compatible SDK”会显示当前默认的API Version ,这里我们选择合适的版本,其他参数可以采用默认设置。
4. 最后,点击“Finish” ,工具就会自动为我们生成代码和相关资源,这样一个ArkTS工程就创建完成啦。
## 二、ArkTS项目目录结构(Stage模型)
创建好工程后,我们来了解一下ArkTS项目的目录结构(基于Stage模型 ):
- **AppScope > app.json5**:这里存储着应用的全局配置信息,详细内容可以参考app.json5配置文件。
- **src > main > ets**:这是存放ArkTS源码的地方。
- **src > main > ets > entryability**:应用的入口相关代码都在这里。
- **src > main > ets > pages**:应用页面的代码,像页面的扩展标识文件等都在这个目录。
- **src > main > resources**:这里存放着应用开发中会用到的各种资源文件,比如多媒体文件、字符串资源、布局文件等,关于资源文件的详细介绍可以查看相关资源分类。
- **src > main > module.json5**:模块配置文件,里面包含模块的配置信息、模块的发布信息、应用/服务的配置信息等,比如“abilities”数组配置应用/服务的相关信息,“deviceConfig”用于配置设备相关信息等。
- **build-profile.json5**:当前的构建配置文件,涵盖编译配置信息,像“buildOption”“target”等配置项。
- **oh-package.json**:模块包描述文件,在进行包管理操作时会用到。
- **etsconfig.json**:用于存储开发工具相关配置信息,比如入口文件(类型和路径 )和体验版相关信息等。
- **oh-protodoc.json**:用于生成接口文档。
- **build-profile.json**:工程全局配置信息,包含“signingConfig”“Profile”“product”等,其中“product”可配置当前运行设备的相关信息。
- **oh-package-lock.json**:主要用来锁定依赖版本,像依赖覆盖(override )、依赖关系声明(overrideDependencyMap )和依赖版本范围等都在这个文件中管理。
## 三、构建第一个页面
1. 我们打开工程目录中的“Project”窗口,找到“entry > src > main > ets > pages” ,然后打开“Index.ets”文件,开始进行页面的编写。在这个文件中,我们使用“Row”和“Column”组件来布局页面,对于更多的组件使用可以参考相关组件介绍。以下是“Index.ets”文件的初始代码示例:
```ets
// Index.ets
@Entry
@Component
struct Index {
message: string = 'Hello World'
build() {
Column() {
Text(this.message)
.fontSize(50)
.fontWeight(FontWeight.Bold)
}
.width('100%')
}
}
```
2. 为了让页面更具交互性,我们添加一个“Button”组件,用来响应用户的点击操作,从而实现跳转到另一个页面。修改后的“Index.ets”文件代码如下:
```ets
// Index.ets
@Entry
@Component
struct Index {
message: string = 'Hello World'
build() {
Column() {
Text(this.message)
.fontSize(50)
.fontWeight(FontWeight.Bold)
// 添加按钮,跳转到第二个页面
Button('Next')
.fontSize(16)
.backgroundColor(0x1890ff)
.width(120)
.height(40)
.cornerRadius(10)
}
.width('100%')
}
}
```
3. 编写好代码后,我们在编辑器窗口上方点击调试工具栏中的“Previewer” ,打开预览器,就可以看到第一个页面呈现出“Hello World”和一个“Next”按钮的效果啦。
## 四、构建第二个页面
1. 创建第二个页面文件:在“Project”窗口中,打开“entry > src > main > ets” ,右键点击“pages”文件夹,选择“New > ArkTS File” ,命名为“Second” ,点击“OK” ,就可以看到文件目录结构新增了相关文件。
2. 编写第二个页面代码:参考第一个页面的代码,在第二个页面添加“Text”“Button”等组件,并设置其样式。“Second.ets”文件的代码示例如下:
```ets
// Second.ets
@Entry
@Component
struct Second {
message: string = 'Hi there'
build() {
Column() {
Text(this.message)
.fontSize(50)
.fontWeight(FontWeight.Bold)
Button('Back')
.fontSize(16)
.backgroundColor(0x1890ff)
.width(120)
.height(40)
.cornerRadius(10)
}
.width('100%')
}
}
```
## 五、实现页面间的跳转
页面间的跳转可以通过路由模块“router”来实现。页面路由“router”会根据页面栈找到目标页面,从而实现跳转。
1. 在第一个页面中,实现跳转到第二个页面:在“Index.ets”文件中添加如下代码,当点击“Next”按钮时,跳转到第二个页面。
```ets
// Index.ets
import { router } from '@ohos.router';
@Entry
@Component
struct Index {
message: string = 'Hello World'
build() {
Column() {
Text(this.message)
.fontSize(50)
.fontWeight(FontWeight.Bold)
// 添加按钮,跳转到第二个页面
Button('Next')
.fontSize(16)
.backgroundColor(0x1890ff)
.width(120)
.height(40)
.cornerRadius(10)
.onClick(() => {
router.pushUrl({
url: 'pages/Second',
params: {
message: 'Hi there'
}
}).then(() => {
console.info('Succeeded in clicking the "Next" button.')
}).catch((err) => {
console.error('Failed to jump to the second page. Code is:'+ err.code + ', message is:'+ err.message)
})
})
}
.width('100%')
}
}
```
2. 在第二个页面中,实现回到第一个页面:在“Second.ets”文件中添加如下代码,当点击“Back”按钮时,回到第一个页面。
```ets
// Second.ets
import { router } from '@ohos.router';
@Entry
@Component
struct Second {
message: string = 'Hi there'
build() {
Column() {
Text(this.message)
.fontSize(50)
.fontWeight(FontWeight.Bold)
Button('Back')
.fontSize(16)
.backgroundColor(0x1890ff)
.width(120)
.height(40)
.cornerRadius(10)
.onClick(() => {
router.back()
.then(() => {
console.info('Succeeded in returning to the first page.')
})
.catch((err) => {
console.error('Failed to return to the first page. Code is:'+ err.code + ', message is:'+ err.message)
})
})
}
.width('100%')
}
}
```
3. 打开“Index.ets”文件,点击上方的“预览”按钮进行预览,就可以看到页面间跳转的效果啦。

通过以上步骤,我们成功构建了一个包含两个页面且能实现页面跳转的ArkTS应用。这只是鸿蒙应用开发的一小步,后续还有更多精彩的功能和技术等待我们去探索和学习。
相关文章:
构建第一个ArkTS应用:Hello World之旅
# 构建第一个ArkTS应用:Hello World之旅 在鸿蒙应用开发的领域中,ArkTS语言为我们提供了强大而便捷的开发方式。今天,就让我们一起踏上构建第一个ArkTS应用——Hello World的奇妙旅程。 ## 一、创建ArkTS工程 1. 首先,我们要使用…...
第十五届单片机模拟考试III
题目 题目不长 ,功能也不难,一道水题 按键功能 S4界面切换,S5 功能切换,在不同界面转换不同的功能,定义两个标志位记录即可。 S9复位,回到初始状态,记得界面也得回到初始的信号界面࿰…...
测试:正交法设计测试用例
目录 一、什么是正交法 二、利用正交表设计测试用例 正交法设计测试用例的步骤 一、什么是正交法 正交法的目的是为了减少测试用例的数量,让尽可能少的用例覆盖两两组合。认识正交表。 最简单的正交表是L4(2^3),含意如下: “L”代表正…...
生成 SSH Key 并配置 GitHub/GitLab 详细教程
🔑 生成 SSH Key 并配置 GitHub/GitLab 详细教程 🟢 第 1 步:检查是否已有 SSH Key 在 Git Bash (Windows)、终端 (Linux/macOS) 运行以下命令: ls -al ~/.ssh🔹 可能的输出: 如果已有 SSH Key…...
[ctfshow web入门] web5
前置知识 引用博客:phps的利用 当服务器配置了 .phps 文件类型时,访问 .phps 文件会以语法高亮的形式直接显示 PHP 源代码,而不是执行它。.phps被作为辅助开发者的一种功能,开发者可以通过网站上访问xxx.phps直接获取高亮源代码 …...
Qt基本框架(2)
本篇主要介绍如何设置窗口,以及在窗口中添加按钮 本文部分ppt、视频截图原链接:[萌马工作室的个人空间-萌马工作室个人主页-哔哩哔哩视频] 1. Qt简单框架 2. 通过QMainWindow实现简单界面 QMainWindow是构建主窗口应用的核心类,通过合理设计…...
基于javaweb的SpringBoot图片管理系统图片相册系统设计与实现(源码+文档+部署讲解)
技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论文…...
用HTML.CSS.JavaScript实现一个贪吃蛇小游戏
目录 一、引言二、实现思路1. HTML 结构2. CSS 样式3. JavaScript 逻辑 三、代码实现四、效果展示 一、引言 贪吃蛇是一款经典的小游戏,曾经风靡一时。今天,我们将使用 HTML、CSS 和 JavaScript 来实现一个简单的贪吃蛇小游戏。通过这个项目,…...
[特殊字符] Pandas 常用操作对比:Python 运算符 vs Pandas 函数
在 Pandas 中,许多操作可以直接使用 Python 的比较运算符(如 、!、>、< 等),而不需要调用 Pandas 的专门函数(如 eq()、ne()、gt() 等)。这些运算符在 Pandas 中已经被重载,代码更简洁。以…...
Java 实现插入排序:[通俗易懂的排序算法系列之三]
引言 大家好!欢迎继续关注我的排序算法系列。今天,我们要学习的是另一种非常基础且重要的排序算法——插入排序 (Insertion Sort)。 插入排序的思路非常贴近我们日常整理扑克牌的方式,理解起来相对自然。虽然它在最坏情况下的效率不高,但在某些特定场景下,它的表现甚至优…...
使用MATIO库写入MATLAB结构体(struct)数据的示例程序
使用MATIO库写入MATLAB结构体(struct)数据的示例程序 MATIO是一个用于读写MATLAB数据文件(.mat)的开源C库。下面是一个完整的示例程序,展示如何使用MATIO库创建一个包含结构体数据的MAT文件。 示例程序 #include <stdio.h> #include <stdlib.h> #inc…...
JVM——模型分析、回收机制
方法区:存储已被虚拟机加载的类元数据信息(元空间) 堆:存放对象实例,几乎所有的对象实例都在这里分配内存 虚拟机栈:虚拟机栈描述的是|ava方法执行的内存模型:每个方法被执行的时候都会同时创建一个栈帧(Stack Frame)用于存储局…...
7. 记忆(Memory)机制:让AI拥有“短期记忆”与“长期记忆”
引言:当AI学会"记住你" 2025年某银行智能客服因无法记住用户身份,每次对话都要求重复验证,引发大量投诉。引入LangChain 记忆系统后,客户满意度提升62%。本文将基于MemorySaver与FAISS本地存储,教你构建符合…...
前后端分离下,Spring Boot 请求从发起到响应的完整执行流程
以下是前后端分离架构下,Spring Boot 请求从发起到响应的完整执行流程,结合你提出的所有问题,按真实执行顺序和职责链条重新整理所有核心概念、结构、关键类、数据转换点和典型代码示例: 一、前端发起请求(步骤1-2&…...
【文献阅读】Vision-Language Models for Vision Tasks: A Survey
发表于2024年2月 TPAMI 摘要 大多数视觉识别研究在深度神经网络(DNN)训练中严重依赖标注数据,并且通常为每个单一视觉识别任务训练一个DNN,这导致了一种费力且耗时的视觉识别范式。为应对这两个挑战,视觉语言模型&am…...
【BFS最小步数】魔板题解
魔板题解 题目传送门 题目传送门 一、题目描述 Rubik先生发明了魔板的二维版本,这是一个有8个格子的板子,初始状态为: 1 2 3 4 8 7 6 5我们可以用三种操作来改变魔板状态: A:交换上下两行B:将最右边一…...
搭建K8S-1.23
0、简介 这里只用3台服务器来做一个简单的集群 地址主机名192.168.160.40kuber-master-1192.168.160.41kuber-master-2192.168.160.42kuber-node-1 1、关闭三个服务 (1)防火墙 systemctl stop firewalld (2)Selinux setenf…...
AOP在SpringBoot项目中的简单使用场景
SpringBoot AOP的简单使用 添加DTO添加controller(同包不同类)控制器1控制器2 AOP场景演示1. 对某package下的所有接口进行方法执行前逻辑校验新增切面,编写处理逻辑 2. 对某controller类下的所有接口进行方法执行前逻辑校验新增切面,编写处理逻辑 3. 对…...
windows如何安装wkhtmltoimage 给PHP使用根据HTML生成图片
windows如何安装wkhtmltoimage 给PHP使用 在Windows系统上安装wkhtmltoimage以便在PHP中使用,通常涉及到以下几个步骤: 下载wkhtmltoimage 首先,你需要从wkhtmltopdf的官方网站( https://wkhtmltopdf.org/downloads.html …...
代码仓库使用git lfs上传模型文件
一 Git LFS是什么 它主要是用来处理大文件的,比如模型文件通常都很大,超过100MB的话,用普通的Git上传可能会出问题,所以必须用LFS。 二 具体步骤 Windows环境下使用Git LFS上传大模型文件到代码仓库: 2.1ÿ…...
AI比人脑更强,因为被植入思维模型【42】思维投影思维模型
giszz的理解:本质和外在。我们的行为举止,都是我们的内心的表现。从外边可以看内心,从内心可以判断外在。曾国藩有7个识人的方法,大部分的人在他的面前如同没穿衣服一样。对于我们自身的启迪,我认为有四点&…...
Git 从入门到精通(开源协作特别版)
🧠 Git 从入门到精通(开源协作特别版) ✅ 基础命令 🧰 高级用法 🛠️ 开源实战技巧 🌍 GitHub 社区协作 适合:从0开始 → 熟练开发者 → 参与/维护开源项目 🔰 第1章:…...
spring-cloud-alibaba-nacos-config使用说明
一、核心功能与定位 Spring Cloud Alibaba Nacos Config 是 Spring Cloud Alibaba 生态中的核心组件之一,专为微服务架构提供动态配置管理能力。它通过整合 Nacos 的配置中心功能,替代传统的 Spring Cloud Config,提供更高效的配置集中化管理…...
C# Winform 入门(9)之如何封装并调用dll
封装dll 首先创建 .Net平台 类库 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace _09.Encapsulation_dll {public class Program{/// <summary>/// 求两个double类型的数值的和/// &l…...
vue3中ref、reactive的使用示例
ref 1、导入 import { ref } from "vue"; 2、定义 // 报告表格数据 const reportTableData ref<Report[]>([]); 3、赋值 // 获取报告信息 let result await reportDataByOuterApplyIdService(tableSelectedRow.value?.outerApplyId); reportTable…...
【嵌入式系统设计师】知识点:第2章 嵌入式系统硬件基础知识
提示:“软考通关秘籍” 专栏围绕软考展开,全面涵盖了如嵌入式系统设计师、数据库系统工程师、信息系统管理工程师等多个软考方向的知识点。从计算机体系结构、存储系统等基础知识,到程序语言概述、算法、数据库技术(包括关系数据库、非关系型数据库、SQL 语言、数据仓库等)…...
Vue2_Vue.js教程
目录 一、Vue.js安装 1、独立版本 2、CDN 方法 3、npm 方法 二、Vue Al编程助手 三、Vue.js目录结构 目录解析 四、Vue.js 起步 1.如何定义数据对象和方法并渲染进页面 五、Vue.js 模板语法 插值 文本_{{}} Html_v-html 指令 属性_v-bind (数据传输工具)指令 表…...
【工业场景】用YOLOv12实现饮料类别识别
饮料类别识别任务的意义在于帮助人们更快速地识别和区分不同类型的饮料,从而提高消费者的购物体验和满意度。对于商家而言,饮料类别识别可以帮助他们更好地管理库存、优化货架布局和预测销售趋势,从而提高运营效率和利润。此外,饮…...
从小米汽车事故反思 LabVIEW 开发
近期,小米汽车的一起严重事故引发了社会各界的广泛关注。这起事故不仅让我们对智能汽车的安全性产生了深深的思考,也为 LabVIEW 开发领域带来了诸多值得汲取的知识与领悟。 在智能汽车领域,尤其是涉及到智能驾驶辅助系统时,安全是…...
oracle WAIT 和 NOWAIT
在 Oracle 数据库中,WAIT 和 NOWAIT 是与 锁(Lock) 相关的关键选项,用于控制事务或操作在请求资源时的等待行为。以下是它们的详细说明和应用场景。 1. NOWAIT 选项 作用: 当请求资源(如表、行)…...
