鸿蒙5.0开发进阶:JS组件-文件组织

往期鸿蒙5.0全套实战文章必看:(文中附带全栈鸿蒙5.0学习资料)


文件组织

目录结构

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

图1 目录结构

目录结构中文件分类如下:

  • .hml结尾的HML模板文件,这个文件用来描述当前页面的文件布局结构。

  • .css结尾的CSS样式文件,这个文件用于描述页面样式。

  • .js结尾的JS文件,这个文件用于处理页面和用户的交互。

各个文件夹的作用:

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

说明

  • i18n是开发保留文件夹,不可重命名。

  • 在使用DevEco Studio进行应用开发时,目录结构中的可选文件夹需要开发者根据实际情况自行创建。

文件访问规则

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

  • 引用代码文件,需使用相对路径,比如:../common/utils.js。

  • 引用资源文件,推荐使用绝对路径。比如:/common/xxx.png。

  • 公共代码文件和资源文件推荐放在common下,通过以上两条规则进行访问。

  • CSS样式文件中通过url()函数创建<url>数据类型,如:url(/common/xxx.png)。

说明

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

  • 如果代码文件A和文件B位于同一目录,则代码文件B引用资源文件时可使用相对路径,也可使用绝对路径。

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

媒体文件格式

表1 支持的图片格式

格式支持版本支持的文件类型
BMPAPI Version 4+.bmp
JPEGAPI Version 4+.jpg
PNGAPI Version 4+.png

存储目录定义

从API Version 5开始,image组件支持应用私有目录内的图片资源访问。

目录类型路径前缀访问可见性说明
应用私有目录internal://app/仅本应用可见目录随应用卸载删除,路径禁止使用../等方式访问父目录

HarmonyOS 5.0ArkTS 组件中,设置触摸热区(Touch Area)属性可以通过组件的 `touchable` 和 `hitTestBehavior` 等属性来实现。这些属性允许开发者定义组件响应触摸事件的区域和行为。 ### 配置触摸热区属性 #### 1. `touchable` 属性 `touchable` 属性用于控制组件是否可以响应触摸事件。设置为 `true` 时,组件将可以响应触摸事件;设置为 `false` 时,组件将忽略所有触摸事件。 ```ts @Component struct MyComponent { build() { Column() { Text('Click Me') .fontSize(30) .touchable(true) } .width('100%') .height(100) } } ``` #### 2. `hitTestBehavior` 属性 `hitTestBehavior` 属性用于定义组件在命中测试(Hit Test)中的行为。它有以下几种取值: - `HitTestBehavior.self`: 组件仅在其自身的区域内响应触摸事件。 - `HitTestBehavior.none`: 组件不响应任何触摸事件。 - `HitTestBehavior.default`: 组件按照默认行为响应触摸事件。 ```ts @Component struct MyComponent { build() { Column() { Text('Click Me') .fontSize(30) .hitTestBehavior(HitTestBehavior.self) } .width('100%') .height(100) } } ``` #### 3. 自定义触摸热区 如果需要更复杂的触摸热区配置,可以通过自定义组件的 `onTouch` 事件来实现。通过监听触摸事件,开发者可以自定义组件的响应逻辑。 ```ts @Component struct MyComponent { @State message: string = 'Touch Me' build() { Column() { Text(this.message) .fontSize(30) .onTouch((event: TouchEvent) => { if (event.type === TouchType.Down) { this.message = 'Touched Down' } else if (event.type === TouchType.Up) { this.message = 'Touched Up' } }) } .width('100%') .height(100) } } ``` ### 注意事项 - **性能优化**:在设置触摸热区时,应避免不必要的复杂逻辑,以确保应用的响应速度和性能。 - **交互设计**:触摸热区的设计应符合用户习惯,避免过于敏感或响应区域过小的问题。 通过以上方法,开发者可以灵活地配置 ArkTS 组件的触摸热区属性,以满足不同的交互需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值