1# 使用eTS语言开发(传统代码方式) 2 3> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:** 4> 请使用**DevEco Studio V3.0.0.601 Beta1**及更高版本。 5> 6> 为确保运行效果,本文以使用**DevEco Studio V3.0.0.900 Beta3**版本为例,点击[此处](https://developer.harmonyos.com/cn/develop/deveco-studio#download_beta_openharmony)获取下载链接。 7 8 9## 创建eTS工程 10 111. 若首次打开**DevEco Studio**,请点击**Create Project**创建工程。如果已有一个工程,请点击**File** > **New** > **Create Project**。选择模板“**Empty Ability**”,点击**Next**进行下一步配置。 12 13 ![zh-cn_image_0000001223556342](figures/zh-cn_image_0000001223556342.png) 14 152. 进入配置工程界面,**UI Syntax**选择“**eTS**”,其他参数保持默认设置即可。 16 17 ![zh-cn_image_0000001223716826](figures/zh-cn_image_0000001223716826.png) 18 193. 点击**Finish**,工具会自动生成示例代码和相关资源,等待工程创建完成。 20 21 22## eTS工程项目文件 23 24- **entry** :OpenHarmony工程模块,编译构建生成一个[HAP](../../glossary.md#hap)包。 25 - **src > main > ets** :用于存放ets源码。 26 - **src > main > ets > MainAbility** :应用/服务的入口。 27 - **src > main > ets > MainAbility > pages** :MainAbility包含的页面。 28 - **src > main > ets > MainAbility > pages > index.ets** :pages列表中的第一个页面,即应用的首页入口。 29 - **src > main > ets > MainAbility > app.ets** :承载Ability生命周期。 30 - **src > main > resources** :用于存放应用/服务所用到的资源文件,如图形、多媒体、字符串、布局文件等。 31 - **src > main > config.json** :模块配置文件。主要包含HAP包的配置信息、应用/服务在具体设备上的配置信息以及应用/服务的全局配置信息。具体的配置文件说明,详见[应用包结构配置文件的说明](package-structure.md)。 32 - **build-profile.json5** :当前的模块信息 、编译信息配置项,包括buildOption、targets配置等。 33 - **hvigorfile.js** :模块级编译构建任务脚本,开发者可以自定义相关任务和代码实现。 34 35- **build-profile.json5** :应用级配置信息,包括签名、产品配置等。 36 37- **hvigorfile.js** :应用级编译构建任务脚本。 38 39 40## 构建第一个页面 41 421. 使用文本组件。 43工程同步完成后,在“**Project**”窗口,点击“**entry > src > main > ets > MainAbility > pages**”,打开“**index.ets**”文件,可以看到页面由Text组件组成。“**index.ets**”文件的示例如下: 44 45 46 ```ts 47 // index.ets 48 @Entry 49 @Component 50 struct Index { 51 @State message: string = 'Hello World' 52 53 build() { 54 Row() { 55 Column() { 56 Text(this.message) 57 .fontSize(50) 58 .fontWeight(FontWeight.Bold) 59 } 60 .width('100%') 61 } 62 .height('100%') 63 } 64 } 65 ``` 66 672. 添加按钮。 68 在默认页面基础上,我们添加一个Button组件,作为按钮响应用户点击,从而实现跳转到另一个页面。“**index.ets**”文件的示例如下: 69 70 71 ```ts 72 // index.ets 73 @Entry 74 @Component 75 struct Index { 76 @State message: string = 'Hello World' 77 78 build() { 79 Row() { 80 Column() { 81 Text(this.message) 82 .fontSize(50) 83 .fontWeight(FontWeight.Bold) 84 // 添加按钮,以响应用户点击 85 Button() { 86 Text('Next') 87 .fontSize(30) 88 .fontWeight(FontWeight.Bold) 89 } 90 .type(ButtonType.Capsule) 91 .margin({ 92 top: 20 93 }) 94 .backgroundColor('#0D9FFB') 95 .width('40%') 96 .height('5%') 97 } 98 .width('100%') 99 } 100 .height('100%') 101 } 102 } 103 ``` 104 1053. 在编辑窗口右上角的侧边工具栏,点击Previewer,打开预览器。第一个页面效果如下图所示: 106 107 ![zh-cn_image_0000001216239356](figures/zh-cn_image_0000001216239356.png) 108 109 110## 构建第二个页面 111 1121. 创建第二个页面。 113 - 新建第二个页面文件。在“**Project**”窗口,打开“**entry > src > main > ets > MainAbility**”,右键点击“**pages**”文件夹,选择“**New > eTS File**”,命名为“**second**”,点击“**Finish**”。可以看到文件目录结构如下: 114 115 ![zh-cn_image_0000001223397122](figures/zh-cn_image_0000001223397122.png) 116 117 > 说明: 118 > 119 > 开发者也可以在右键点击“**pages**”文件夹时,选择“**new > Page**”,则无需手动配置相关页面的路由。 120 121 - 配置第二个页面的路由。在config.json文件中的“module - js - pages”下配置第二个页面的路由“pages/second”。示例如下: 122 123 ``` 124 { 125 ... 126 "module": { 127 ... 128 "js": [ 129 { 130 ... 131 "pages": [ 132 "pages/index", 133 "pages/second" 134 ] 135 ... 136 } 137 ] 138 } 139 } 140 ``` 141 1422. 添加文本及按钮。 143 参照第一个页面,在第二个页面添加Text组件、Button组件等,并设置其样式。“**second.ets**”文件的示例如下: 144 145 146 ```ts 147 // second.ets 148 @Entry 149 @Component 150 struct Second { 151 @State message: string = 'Hi there' 152 153 build() { 154 Row() { 155 Column() { 156 Text(this.message) 157 .fontSize(50) 158 .fontWeight(FontWeight.Bold) 159 Button() { 160 Text('Back') 161 .fontSize(25) 162 .fontWeight(FontWeight.Bold) 163 } 164 .type(ButtonType.Capsule) 165 .margin({ 166 top: 20 167 }) 168 .backgroundColor('#0D9FFB') 169 .width('40%') 170 .height('5%') 171 } 172 .width('100%') 173 } 174 .height('100%') 175 } 176 } 177 ``` 178 179 180## 实现页面间的跳转 181 182页面间的导航可以通过页面路由router来实现。页面路由router根据页面url找到目标页面,从而实现跳转。使用页面路由请导入router模块。 183 1841. 第一个页面跳转到第二个页面。 185 在第一个页面中,跳转按钮绑定onClick事件,点击按钮时跳转到第二页。“**index.ets**”文件的示例如下: 186 187 188 ```ts 189 // index.ets 190 import router from '@ohos.router'; 191 192 @Entry 193 @Component 194 struct Index { 195 @State message: string = 'Hello World' 196 197 build() { 198 Row() { 199 Column() { 200 Text(this.message) 201 .fontSize(50) 202 .fontWeight(FontWeight.Bold) 203 // 添加按钮,以响应用户点击 204 Button() { 205 Text('Next') 206 .fontSize(30) 207 .fontWeight(FontWeight.Bold) 208 } 209 .type(ButtonType.Capsule) 210 .margin({ 211 top: 20 212 }) 213 .backgroundColor('#0D9FFB') 214 .width('40%') 215 .height('5%') 216 // 跳转按钮绑定onClick事件,点击时跳转到第二页 217 .onClick(() => { 218 router.push({ url: 'pages/second' }) 219 }) 220 } 221 .width('100%') 222 } 223 .height('100%') 224 } 225 } 226 ``` 227 2282. 第二个页面返回到第一个页面。 229 在第二个页面中,返回按钮绑定onClick事件,点击按钮时返回到第一页。“**second.ets**”文件的示例如下: 230 231 232 ```ts 233 // second.ets 234 import router from '@ohos.router'; 235 236 @Entry 237 @Component 238 struct Second { 239 @State message: string = 'Hi there' 240 241 build() { 242 Row() { 243 Column() { 244 Text(this.message) 245 .fontSize(50) 246 .fontWeight(FontWeight.Bold) 247 Button() { 248 Text('Back') 249 .fontSize(25) 250 .fontWeight(FontWeight.Bold) 251 } 252 .type(ButtonType.Capsule) 253 .margin({ 254 top: 20 255 }) 256 .backgroundColor('#0D9FFB') 257 .width('40%') 258 .height('5%') 259 // 返回按钮绑定onClick事件,点击按钮时返回到第一页 260 .onClick(() => { 261 router.back() 262 }) 263 } 264 .width('100%') 265 } 266 .height('100%') 267 } 268 } 269 ``` 270 2713. 打开index.ets文件,点击预览器中的 ![zh-cn_image_0000001262219043](figures/zh-cn_image_0000001262219043.png) 按钮进行刷新。 效果如下图所示: 272 273 ![zh-cn_image_0000001260684127](figures/zh-cn_image_0000001260684127.png) 274 275 276## 使用真机运行应用 277 2781. 将搭载OpenHarmony标准系统的开发板与电脑连接。 279 2802. 点击**File** > **Project Structure** > **Project** > **SigningConfigs**界面勾选“**Automatically generate signing**”,等待自动签名完成即可,点击“**OK**”。如下图所示: 281 282 ![zh-cn_image_0000001268077317](figures/zh-cn_image_0000001268077317.png) 283 2843. 在编辑窗口右上角的工具栏,点击![zh-cn_image_0000001262206247](figures/zh-cn_image_0000001262206247.png)按钮运行。效果如下图所示: 285 286 ![zh-cn_image_0000001217526428](figures/zh-cn_image_0000001217526428.png) 287 288恭喜您已经使用eTS语言(传统代码方式)开发完成了第一个OpenHarmony应用,快来[探索更多的OpenHarmony功能](../application-dev-guide.md)吧。 289