【鸿蒙应用开发实战】类Web开发范式2——前端语法

兼容JS的类Web开发范式

JS FA应用的JS模块(entry/src/main/js/module)的典型开发目录结构如下:

1. 项目基本结构

1.1. 目录结构

在这里插入图片描述

1.2. 项目文件分类如下:

1.hml结尾的HML模板文件,这个文件用来描述当前页面的文件布局结构。
2.css结尾的CSS样式文件,这个文件用于描述页面样式。
3.js结尾的JS文件,这个文件用于处理页面和用户的交互。

1.3. 目录模块划分:

1.app.js文件用于全局JavaScript逻辑和应用生命周期管理。
2.pages目录用于存放所有组件页面。
3.common目录用于存放公共资源文件,比如:媒体资源和JS文件。
4.目录用于配置不同语言场景资源内容,比如应用文本词条,图片路径等资源。

说明

●i18n是开发保留文件夹,不可重命名。
●在使用DevEco Studio进行应用开发时,目录结构中的可选文件夹需要开发者根据实际情况自行创建。

1.4. 文件访问规则

应用资源可通过绝对路径或相对路径的方式进行访问,本开发框架中绝对路径以"/“开头,相对路径以”./“或”…/"。具体访问规则如下:

●引用代码文件,需使用相对路径,比如:…/common/utils.js。
●引用资源文件,推荐使用绝对路径。比如:/common/xxx.png。
●公共代码文件和资源文件推荐放在common下,通过以上两条规则进行访问。
●CSS样式文件中通过url()函数创建数据类型,如:url(/common/xxx.png)。

说明
当代码文件A需要引用代码文件B时:

●如果代码文件A和文件B位于同一目录,则代码文件B引用资源文件时可使用相对路径,也可使用绝对路径。
●如果代码文件A和文件B位于不同目录,则代码文件B引用资源文件时必须使用绝对路径。因为Webpack打包时,代码文件B的目录会发生变化。

2. 语法

2.1. HML语法

HML是一套类HTML的标记语言,通过组件,事件构建出页面的内容。页面具备数据绑定、事件绑定、列表渲染、条件渲染等高级能力。

2.1.1. 页面结构

<!-- xxx.hml -->
<div class="item-container">
  <text class="item-title">Image Show</text>
  <div class="item-content">
    <image src="/common/xxx.png" class="image"></image>
  </div>
</div>

2.1.2. 数据绑定

<!-- xxx.hml -->
<div onclick="changeText">
  <text> {
  {content[1]}} </text>
</div>
// xxx.js
export default {
  data: {
    content: ['Hello World!', 'Welcome to my world!']
  },
  changeText: function() {
    this.content.splice(1, 1, this.content[0]);
  }
}

说明

●针对数组内的数据修改,请使用splice方法生效数据绑定变更。
●hml中的js表达式不支持ES6语法。

2.1.3. 事件绑定

事件绑定的回调函数接收一个事件对象参数,可以通过访问该事件对象获取事件信息。

<!-- xxx.hml -->
<div>
  <!-- 通过'@'绑定事件 -->
  <div @click="clickfunc"></div>
  <!-- 通过'on'绑定事件  -->
  <div onclick="clickfunc"></div>
  <!-- 通过'on'绑定事件,不推荐使用5+ -->
  <div onclick="clickfunc"></div>
  <!-- 使用事件冒泡模式绑定事件回调函数。5+ -->
  <div on:click.bubble="clickfunc"></div>
  <!-- on:{event}等价于on:{event}.bubble。5+ -->
  <div on:click="clickfunc"></div>
  <!-- 绑定事件回调函数,但阻止事件向上传递。5+ -->
  <div grab:click.bubble="clickfunc"></div>
  <!-- grab:{event}等价于grab:{event}.bubble。5+ -->
  <div grab:click="clickfunc"></div>
</div>
// xxx.js
export default {
  data: {
    obj: '',
  },
  clickfunc: function(e) {
    this.obj = 'Hello World';
    console.log(e);
  },
}

说明
事件冒泡机制从API Version 5开始支持。升级SDK后,运行存量JS应用,采用旧写法(onclick)的事件绑定还是按事件不冒泡进行处理。但如果使用新版本SD

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值