• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 使用JS语言开发(FA模型)
2
3
4> **说明:**
5>
6> 为确保运行效果,本文以使用**DevEco Studio 3.1 Beta2**版本为例,点击[此处](https://developer.harmonyos.com/cn/develop/deveco-studio#download)获取下载链接。
7
8
9## 创建JS工程
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**选择“**JS**”,其他参数保持默认设置即可。
16
17   ![chooseFAModel_js](figures/chooseFAModel_js.png)
18
19   > **说明:**
20   >
21   > DevEco Studio V2.2 Beta1及更高版本支持使用JS[低代码开发](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**,工具会自动生成示例代码和相关资源,等待工程创建完成。
28
294. 工程创建完成后,在**entry > build-profile.json5**文件中,将targets中的runtimeOS改为“OpenHarmony”,然后点击右上角提示框的**Sync Now**以进行OpenHarmony应用开发。
30
31
32## JS工程目录结构
33
34![zh-cn_image_0000001435376433](figures/zh-cn_image_0000001435376433.png)
35
36- **entry**:OpenHarmony工程模块,编译构建生成一个[HAP](../../glossary.md#hap)包。
37  - **src > main > js**:用于存放js源码。
38  - **src > main > js > MainAbility**:应用/服务的入口。
39  - **src > main > js > MainAbility > i18n**:用于配置不同语言场景资源内容,比如应用文本词条、图片路径等资源。
40  - **src > main > js > MainAbility > pages**:MainAbility包含的页面。
41  - **src > main > js > MainAbility > app.js**:承载Ability生命周期。
42
43  - **src > main > resources**:用于存放应用/服务所用到的资源文件,如图形、多媒体、字符串、布局文件等。关于资源文件,详见[资源限定与访问](../ui/js-framework-resource-restriction.md)。
44  - **src > main > config.json**:模块配置文件。主要包含HAP的配置信息、应用/服务在具体设备上的配置信息以及应用/服务的全局配置信息。具体的配置文件说明,详见[应用配置文件(FA模型)](application-configuration-file-overview-fa.md)。
45  - **build-profile.json5**:当前的模块信息 、编译信息配置项,包括buildOption、targets配置等。其中targets中可配置当前运行环境,默认为HarmonyOS。若需开发OpenHarmony应用,则需开发者自行修改为OpenHarmony。
46  - **hvigorfile.ts**:模块级编译构建任务脚本,开发者可以自定义相关任务和代码实现。
47
48- **build-profile.json5**:应用级配置信息,包括签名、产品配置等。
49
50- **hvigorfile.ts**:应用级编译构建任务脚本。
51
52
53## 构建第一个页面
54
551. 使用文本组件。
56
57   工程同步完成后,在“**Project**”窗口,点击“**entry > src > main > js > MainAbility > pages> index**”,打开“**index.hml**”文件,设置Text组件内容。“**index.hml**”文件的示例如下:
58
59   ```html
60   <!-- index.hml -->
61   <div class="container">
62       <text class="title">
63           Hello World
64       </text>
65   </div>
66   ```
67
682. 添加按钮,并绑定onclick方法。
69
70   在默认页面基础上,我们添加一个button类型的input组件,作为按钮响应用户点击,从而实现跳转到另一个页面。“**index.hml**”文件的示例代码如下:
71
72   ```html
73   <!-- index.hml -->
74   <div class="container">
75       <text class="title">
76           Hello World
77       </text>
78
79   <!-- 添加按钮,值为Next,并绑定onclick方法-->
80       <input class="btn" type="button" value="Next" onclick="onclick"></input>
81   </div>
82   ```
83
843. 设置页面样式。
85
86   在“**Project**”窗口,点击“**entry &gt; src &gt; main &gt; js &gt; MainAbility &gt; pages&gt; index**”,打开“**index.css**”文件,可以对页面中文本、按钮设置宽高、字体大小、间距等样式。“**index.css**”文件的示例如下:
87
88   ```css
89   /* index.css */
90   .container {
91       display: flex;
92       flex-direction: column;
93       justify-content: center;
94       align-items: center;
95       left: 0px;
96       top: 0px;
97       width: 100%;
98       height: 100%;
99   }
100
101   .title {
102       font-size: 100px;
103       font-weight: bold;
104       text-align: center;
105       width: 100%;
106       margin: 10px;
107   }
108
109   .btn {
110       font-size: 60px;
111       font-weight: bold;
112       text-align: center;
113       width: 40%;
114       height: 5%;
115       margin-top: 20px;
116   }
117   ```
118
1194. 在编辑窗口右上角的侧边工具栏,点击Previewer,打开预览器。第一个页面效果如下图所示:
120
121   ![zh-cn_image_0000001311494592](figures/zh-cn_image_0000001311494592.png)
122
123
124## 构建第二个页面
125
1261. 创建第二个页面。
127
128   在“**Project**”窗口,打开“**entry &gt; src &gt; main &gt; js &gt; MainAbility**”,右键点击“**pages**”文件夹,选择“**New &gt; Page**”,命名为“**second**”,点击“**Finish**”,即完成第二个页面的创建。可以看到文件目录结构如下:
129
130   ![zh-cn_image_0000001311334944](figures/zh-cn_image_0000001311334944.png)
131
1322. 添加文本及按钮。
133
134   参照第一个页面,在第二个页面添加文本、按钮及点击按钮绑定页面返回等。“**second.hml**”文件的示例如下:
135
136   ```html
137   <!-- second.hml -->
138   <div class="container">
139       <text class="title">
140           Hi there
141       </text>
142
143   <!-- 添加按钮,值为Back,并绑定back方法-->
144       <input class="btn" type="button" value="Back" onclick="back"></input>
145   </div>
146   ```
147
1483. **设置页面样式。**“**second.css**”文件的示例如下:
149
150   ```css
151   /* second.css */
152   .container {
153       display: flex;
154       flex-direction: column;
155       justify-content: center;
156       align-items: center;
157       left: 0px;
158       top: 0px;
159       width: 100%;
160       height: 100%;
161   }
162
163   .title {
164       font-size: 100px;
165       font-weight: bold;
166       text-align: center;
167       width: 100%;
168       margin: 10px;
169   }
170
171   .btn {
172       font-size: 60px;
173       font-weight: bold;
174       text-align: center;
175       width: 40%;
176       height: 5%;
177       margin-top: 20px;
178   }
179   ```
180
181
182## 实现页面间的跳转
183
184页面间的导航可以通过[页面路由router](../reference/apis/js-apis-router.md)来实现。页面路由router根据页面url找到目标页面,从而实现跳转。使用页面路由请导入router模块。
185
1861. 第一个页面跳转到第二个页面。
187
188   在第一个页面中,跳转按钮绑定onclick方法,点击按钮时跳转到第二页。“**index.js**”示例如下:
189
190   ```js
191   // index.js
192   // 导入页面路由模块
193   import router from '@ohos.router';
194
195   export default {
196       onclick: function () {
197           router.push({
198               url: "pages/second/second"
199           })
200       }
201   }
202   ```
203
2042. 第二个页面返回到第一个页面。
205
206   在第二个页面中,返回按钮绑定back方法,点击按钮时返回到第一页。“**second.js**”示例如下:
207
208   ```js
209   // second.js
210   // 导入页面路由模块
211   import router from '@ohos.router';
212
213   export default {
214       back: function () {
215           router.back()
216       }
217   }
218   ```
219
2203. 打开index文件夹下的任意一个文件,点击预览器中的![zh-cn_image_0000001311015192](figures/zh-cn_image_0000001311015192.png)按钮进行刷新。效果如下图所示:
221
222   ![zh-cn_image_0000001311175132](figures/zh-cn_image_0000001311175132.png)
223
224
225## 使用真机运行应用
226
2271. 将搭载OpenHarmony标准系统的开发板与电脑连接。
228
2292. 点击**File** &gt; **Project Structure...** &gt; **Project** &gt; **Signing Configs**界面勾选“**Automatically generate signature**”,等待自动签名完成即可,点击“**OK**”。如下图所示:
230
231   ![signConfig](figures/signConfig.png)
232
2333. 在编辑窗口右上角的工具栏,点击![zh-cn_image_0000001364054485](figures/zh-cn_image_0000001364054485.png)按钮运行。效果如下图所示:
234
235   ![zh-cn_image_0000001311175132](figures/zh-cn_image_0000001311175132.png)
236
237恭喜您已经使用JS语言开发(FA模型)完成了第一个OpenHarmony应用,快来[探索更多的OpenHarmony功能](../application-dev-guide.md)吧。
238