• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 构建第一个ArkTS应用(FA模型)
2
3
4>  **说明:**
5>
6>  为确保运行效果,本文以使用**DevEco Studio 3.1 Beta2**版本为例,点击[此处](https://developer.harmonyos.com/cn/develop/deveco-studio)获取下载链接。
7
8
9## 创建ArkTS工程
10
111. 若首次打开**DevEco Studio**,请点击**Create Project**创建工程。如果已经打开了一个工程,请在菜单栏选择**File** > **New** > **Create Project**来创建一个新工程。选择**Application**应用开发(本文以应用开发为例,**Atomic Service**对应为原子化服务开发),选择模板“**Empty Ability**”,点击**Next**进行下一步配置。
12
13   ![createProject](figures/createProject.png)
14
152. 进入配置工程界面,**Compile SDK** 选择“**8**”(**Compile SDK**选择“**9**”时注意同步选择**Model** 为“**FA**”,此处以选择“**8**”为例),**Language**选择“**ArkTS**”,其他参数保持默认设置即可。
16
17   ![chooseFAModel_ets](figures/chooseFAModel_ets.png)
18
19   > **说明:**
20   >
21   > DevEco Studio V3.0 Beta3及更高版本支持使用ArkTS[低代码开发](https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/ide-low-code-overview-0000001480179573-V3)方式。
22   >
23   > 低代码开发方式具有丰富的UI界面编辑功能,通过可视化界面开发方式快速构建布局,可有效降低开发者的上手成本并提升开发者构建UI界面的效率。
24   >
25   > 如需使用低代码开发方式,请打开上图中的Enable Super Visual开关。
26
273. 点击**Finish**,工具会自动生成示例代码和相关资源,等待工程创建完成。
284. 工程创建完成后,在**entry > build-profile.json5**文件中,将targets中的runtimeOS改为“OpenHarmony”,然后点击右上角提示框的**Sync Now**以进行OpenHarmony应用开发。
29
30
31## ArkTS工程目录结构(FA模型)
32
33![zh-cn_image_0000001384652328](figures/zh-cn_image_0000001384652328.png)
34
35- **entry**:OpenHarmony工程模块,编译构建生成一个[HAP](../../glossary.md#hap)包。
36  - **src > main > ets**:用于存放ArkTS源码。
37  - **src > main > ets > MainAbility**:应用/服务的入口。
38  - **src > main > ets > MainAbility > pages**:MainAbility包含的页面。
39  - **src > main > ets > MainAbility > pages > index.ets**:pages列表中的第一个页面,即应用的首页入口。
40  - **src > main > ets > MainAbility > app.ets**:承载Ability生命周期。
41  - **src > main > resources**:用于存放应用/服务所用到的资源文件,如图形、多媒体、字符串、布局文件等。关于资源文件,详见[资源文件的分类](resource-categories-and-access.md#资源分类)。
42  - **src > main > config.json**:模块配置文件。主要包含HAP的配置信息、应用/服务在具体设备上的配置信息以及应用/服务的全局配置信息。具体的配置文件说明,详见[应用配置文件(FA模型)](application-configuration-file-overview-fa.md)。
43  - **build-profile.json5**:当前的模块信息 、编译信息配置项,包括buildOption、targets配置等。其中targets中可配置当前运行环境,默认为HarmonyOS。若需开发OpenHarmony应用,则需开发者自行修改为OpenHarmony。
44  - **hvigorfile.ts**:模块级编译构建任务脚本,开发者可以自定义相关任务和代码实现。
45- **build-profile.json5**:应用级配置信息,包括签名、产品配置等。
46- **hvigorfile.ts**:应用级编译构建任务脚本。
47
48
49## 构建第一个页面
50
511. 使用文本组件。
52
53   工程同步完成后,在“**Project**”窗口,点击“**entry > src > main > ets > MainAbility > pages**”,打开“**index.ets**”文件,可以看到页面由Text组件组成。“**index.ets**”文件的示例如下:
54
55   ```ts
56   // index.ets
57   @Entry
58   @Component
59   struct Index {
60     @State message: string = 'Hello World'
61
62     build() {
63       Row() {
64         Column() {
65           Text(this.message)
66             .fontSize(50)
67             .fontWeight(FontWeight.Bold)
68         }
69         .width('100%')
70       }
71       .height('100%')
72     }
73   }
74   ```
75
762. 添加按钮。
77
78   在默认页面基础上,我们添加一个Button组件,作为按钮响应用户点击,从而实现跳转到另一个页面。“**index.ets**”文件的示例如下:
79
80   ```ts
81   // index.ets
82   @Entry
83   @Component
84   struct Index {
85     @State message: string = 'Hello World'
86
87     build() {
88       Row() {
89         Column() {
90           Text(this.message)
91             .fontSize(50)
92             .fontWeight(FontWeight.Bold)
93           // 添加按钮,以响应用户点击
94           Button() {
95             Text('Next')
96               .fontSize(30)
97               .fontWeight(FontWeight.Bold)
98           }
99           .type(ButtonType.Capsule)
100           .margin({
101             top: 20
102           })
103           .backgroundColor('#0D9FFB')
104           .width('40%')
105           .height('5%')
106         }
107         .width('100%')
108       }
109       .height('100%')
110     }
111   }
112   ```
113
1143. 在编辑窗口右上角的侧边工具栏,点击Previewer,打开预览器。第一个页面效果如下图所示:
115
116   ![zh-cn_image_0000001311334976](figures/zh-cn_image_0000001311334976.png)
117
118
119## 构建第二个页面
120
1211. 创建第二个页面。
122
123   - 新建第二个页面文件。在“**Project**”窗口,打开“**entry > src > main > ets > MainAbility**”,右键点击“**pages**”文件夹,选择“**New > ArkTS File**”,命名为“**second**”,点击“**Finish**”。可以看到文件目录结构如下:
124      ![zh-cn_image_0000001311334932](figures/zh-cn_image_0000001311334932.png)
125
126      > **说明:**
127      >
128      > 开发者也可以在右键点击“**pages**”文件夹时,选择“**New > Page**”,则无需手动配置相关页面路由。
129   - 配置第二个页面的路由。在config.json文件中的“module - js - pages”下配置第二个页面的路由“pages/second”。示例如下:
130
131      ```json
132      {
133        "module": {
134          "js": [
135            {
136              "pages": [
137                "pages/index",
138                "pages/second"
139              ]
140              }
141          ]
142        }
143      }
144      ```
145
1462. 添加文本及按钮。
147
148   参照第一个页面,在第二个页面添加Text组件、Button组件等,并设置其样式。“**second.ets**”文件的示例如下:
149
150   ```ts
151   // second.ets
152   @Entry
153   @Component
154   struct Second {
155     @State message: string = 'Hi there'
156
157     build() {
158       Row() {
159         Column() {
160           Text(this.message)
161             .fontSize(50)
162             .fontWeight(FontWeight.Bold)
163           Button() {
164             Text('Back')
165               .fontSize(25)
166               .fontWeight(FontWeight.Bold)
167           }
168           .type(ButtonType.Capsule)
169           .margin({
170             top: 20
171           })
172           .backgroundColor('#0D9FFB')
173           .width('40%')
174           .height('5%')
175         }
176         .width('100%')
177       }
178       .height('100%')
179     }
180   }
181   ```
182
183
184## 实现页面间的跳转
185
186页面间的导航可以通过[页面路由router](../reference/apis/js-apis-router.md)来实现。页面路由router根据页面url找到目标页面,从而实现跳转。使用页面路由请导入router模块。
187
1881. 第一个页面跳转到第二个页面。
189
190   在第一个页面中,跳转按钮绑定onClick事件,点击按钮时跳转到第二页。“**index.ets**”文件的示例如下:
191
192   ```ts
193   // index.ets
194   // 导入页面路由模块
195   import router from '@ohos.router';
196
197   @Entry
198   @Component
199   struct Index {
200     @State message: string = 'Hello World'
201
202     build() {
203       Row() {
204         Column() {
205           Text(this.message)
206             .fontSize(50)
207             .fontWeight(FontWeight.Bold)
208           // 添加按钮,以响应用户点击
209           Button() {
210             Text('Next')
211               .fontSize(30)
212               .fontWeight(FontWeight.Bold)
213           }
214           .type(ButtonType.Capsule)
215           .margin({
216             top: 20
217           })
218           .backgroundColor('#0D9FFB')
219           .width('40%')
220           .height('5%')
221           // 跳转按钮绑定onClick事件,点击时跳转到第二页
222           .onClick(() => {
223             router.push({ url: 'pages/second' })
224             // 若为API 9工程,则可使用以下接口
225             // router.pushUrl({ url: 'pages/second' })
226
227           })
228         }
229         .width('100%')
230       }
231       .height('100%')
232     }
233   }
234   ```
235
2362. 第二个页面返回到第一个页面。
237
238   在第二个页面中,返回按钮绑定onClick事件,点击按钮时返回到第一页。“**second.ets**”文件的示例如下:
239
240   ```ts
241   // second.ets
242   // 导入页面路由模块
243   import router from '@ohos.router';
244
245   @Entry
246   @Component
247   struct Second {
248     @State message: string = 'Hi there'
249
250     build() {
251       Row() {
252         Column() {
253           Text(this.message)
254             .fontSize(50)
255             .fontWeight(FontWeight.Bold)
256           Button() {
257             Text('Back')
258               .fontSize(25)
259               .fontWeight(FontWeight.Bold)
260           }
261           .type(ButtonType.Capsule)
262           .margin({
263             top: 20
264           })
265           .backgroundColor('#0D9FFB')
266           .width('40%')
267           .height('5%')
268           // 返回按钮绑定onClick事件,点击按钮时返回到第一页
269           .onClick(() => {
270             router.back()
271           })
272         }
273         .width('100%')
274       }
275       .height('100%')
276     }
277   }
278   ```
279
2803. 打开index.ets文件,点击预览器中的![zh-cn_image_0000001311015192](figures/zh-cn_image_0000001311015192.png)按钮进行刷新。效果如下图所示:
281
282   ![zh-cn_image_0000001364254729](figures/zh-cn_image_0000001364254729.png)
283
284
285## 使用真机运行应用
286
2871. 将搭载OpenHarmony标准系统的开发板与电脑连接。
288
2892. 点击**File** > **Project Structure...** > **Project** > **SigningConfigs** 界面勾选“**Automatically generate signature**”,等待自动签名完成即可,点击“**OK**”。如下图所示:
290
291   ![signConfig](figures/signConfig.png)
292
2933. 在编辑窗口右上角的工具栏,点击![zh-cn_image_0000001364054485](figures/zh-cn_image_0000001364054485.png)按钮运行。效果如下图所示:
294
295   ![zh-cn_image_0000001364254729](figures/zh-cn_image_0000001364254729.png)
296
297恭喜您已经使用ArkTS语言开发(FA模型)完成了第一个OpenHarmony应用,快来[探索更多的OpenHarmony功能](../application-dev-guide.md)吧。
298