鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:Web)上篇

本文详细介绍了在鸿蒙HarmonyOS中使用ArkTS进行声明式Web应用开发时,如何配置各种手势及权限,包括domStorageAccess、fileAccess、imageAccess等。通过示例代码展示了如何开启和使用这些功能,以便开发者更好地控制Web应用的行为和安全。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新HarmonyOS鸿蒙全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img

img
img
htt

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip204888 (备注鸿蒙)
img

正文

Column() {
// 加载沙箱路径文件。
Web({ src: url, controller: this.controller })
}
}
}

  1. 修改EntryAbility.ts。

以filesDir为例,获取沙箱路径。若想获取其他路径,请参考应用文件路径

// xxx.ts
import UIAbility from ‘@ohos.app.ability.UIAbility’;
import AbilityConstant from ‘@ohos.app.ability.AbilityConstant’;
import Want from ‘@ohos.app.ability.Want’;
import web_webview from ‘@ohos.web.webview’;
import { GlobalContext } from ‘…/GlobalContext’

export default class EntryAbility extends UIAbility {
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
// 通过在GlobalContext对象上绑定filesDir,可以实现UIAbility组件与UI之间的数据同步。
GlobalContext.getContext().setObject(“filesDir”, this.context.filesDir);
console.log("Sandbox path is " + GlobalContext.getContext().getObject(“filesDir”))
}
}

加载的html文件。

Hello World

属性

通用属性仅支持aspectRatiobackdropBlurbackgroundColorbindContentCoverbindContextMenubindMenubindSheetborderColorborderRadiusborderStyleborderWidthclipconstraintSizedefaultFocusfocusabletabIndexgroupDefaultFocusfocusOnTouchdisplayPriorityenabledflexBasisflexGrowflexShrinklayoutWeightidgridOffsetgridSpanuseSizeTypeheighttouchablemarginmarkAnchoroffsetwidthzIndexvisibilityscaletransformresponseRegionsizestateStylesopacityshadowsharedTransitiontransition

domStorageAccess

domStorageAccess(domStorageAccess: boolean)

设置是否开启文档对象模型存储接口(DOM Storage API)权限,默认未开启。

系统能力: SystemCapability.Web.Webview.Core

参数:

参数名 参数类型 必填 默认值 参数描述
domStorageAccess boolean false 设置是否开启文档对象模型存储接口(DOM Storage API)权限。

示例:

// xxx.ets
import web_webview from ‘@ohos.web.webview’

@Entry
@Component
struct WebComponent {
controller: web_webview.WebviewController = new web_webview.WebviewController()
build() {
Column() {
Web({ src: ‘www.example.com’, controller: this.controller })
.domStorageAccess(true)
}
}
}

fileAccess

fileAccess(fileAccess: boolean)

设置是否开启应用中文件系统的访问,默认启用。$rawfile(filepath/filename)")中rawfile路径的文件不受该属性影响而限制访问。

参数:

参数名 参数类型 必填 默认值 参数描述
fileAccess boolean true 设置是否开启应用中文件系统的访问,默认启用。

示例:

// xxx.ets
import web_webview from ‘@ohos.web.webview’

@Entry
@Component
struct WebComponent {
controller: web_webview.WebviewController = new web_webview.WebviewController()
build() {
Column() {
Web({ src: ‘www.example.com’, controller: this.controller })
.fileAccess(true)
}
}
}

imageAccess

imageAccess(imageAccess: boolean)

设置是否允许自动加载图片资源,默认允许。

参数:

参数名 参数类型 必填 默认值 参数描述
imageAccess boolean true 设置是否允许自动加载图片资源。

示例:

// xxx.ets
import web_webview from ‘@ohos.web.webview’

@Entry
@Component
struct WebComponent {
controller: web_webview.WebviewController = new web_webview.WebviewController()
build() {
Column() {
Web({ src: ‘www.example.com’, controller: this.controller })
.imageAccess(true)
}
}
}

javaScriptProxy

javaScriptProxy(javaScriptProxy: { object: object, name: string, methodList: Array, controller: WebviewController | WebController})

注入JavaScript对象到window对象中,并在window对象中调用该对象的方法。所有参数不支持更新。此接口只支持注册一个对象,若需要注册多个对象请使用registerJavaScriptProxy9+

参数:

参数名 参数类型 必填 默认值 参数描述
object object - 参与注册的对象。只能声明方法,不能声明属性。
name string - 注册对象的名称,与window中调用的对象名一致。
m
<think>好的,用户现在有一个新的想法,想把现有的商品管理系统从Vue网页端迁移到鸿蒙手机端,是否需要另外搭建管理系统?我需要仔细分析这个问题。 首先,用户原来的系统是Vue开发的网页形式,现在想转移到鸿蒙手机端。用户可能希望利用鸿蒙的特性,比如更好的性能、跨设备协同或者更好的移动端体验。鸿蒙支持多种开发方式,比如ArkTS和JS,所以可能需要考虑技术栈的转换。 接下来,用户提到是否需要另搭建管理系统。这里的“管理系统”可能指的是后端部分。如果原来的Vue前端和后端是分离的,比如使用RESTful API,那么可能不需要重新搭建后端,只需要开发鸿蒙前端即可。但如果后端需要适配鸿蒙的特性,或者原有后端不够灵活,可能需要部分调整。 然后,用户可能担心迁移的可行性和成本。需要评估现有系统的架构,如果后端是独立的,那么前端迁移到鸿蒙是可行的,可以复用现有的API。同时,鸿蒙支持JS开发,可能部分Vue代码可以复用,或者需要重写为ArkTS。另外,鸿蒙的UI组件和网页不同,需要重新设计界面。 另外,用户可能没有明确说明是否有移动端的需求,比如是否需要利用手机的摄像头、传感器等特性,这些在网页端可能无法实现,而鸿蒙可以提供更好的支持。此外,用户可能希望利用鸿蒙的分布式能力,实现多设备协同,这也是迁移的一个优势。 还需要考虑开发成本和时间。如果团队熟悉鸿蒙开发,迁移会更容易。否则,可能需要学习新的技术栈。不过,鸿蒙的文档和社区支持可能帮助降低学习曲线。 最后,用户可能担心是否真的需要另建管理系统,或者是否可以部分复用。如果后端服务足够灵活,可能不需要重建,只需要前端适配。但如果原有系统耦合度高,可能需要部分重构。 总结下来,迁移到鸿蒙手机端是可行的,但需要根据现有架构决定是否需要调整后端。建议分步骤实施,先开发鸿蒙前端,复用现有API,再逐步优化后端。同时,利用鸿蒙的特性提升用户体验,而不是完全重建系统。</think>### **可行性分析与实施路径** #### **1. 是否必须“另搭建管理系统”?—— 取决于现有架构** **关键问题**: - **当前Vue系统的技术架构**: - 若原有系统为**前后端分离架构**(Vue前端 + 独立后端API),则**无需重建后端**,仅需开发鸿蒙前端调用现有API; - 若原有系统为**全栈耦合架构**(如Vue+Node.js未分离),需评估后端接口复用性,可能需**部分重构为标准化API**。 - **鸿蒙应用形态需求**: - 若仅需将Web功能迁移到手机端,可通过**鸿蒙Web组件内嵌Vue页面**快速实现(兼容性有限); - 若需深度适配鸿蒙特性(如分布式数据管理、多端协同),则需**开发原生HarmonyOS应用**,但可复用后端逻辑。 --- #### **2. 迁移鸿蒙的可行路径** ##### **方案一:最小化改造(低成本快速上线)** - **技术选型**: - 使用**ArkTS/JS开发鸿蒙前端**,直接调用现有Vue系统的后端API(需确保接口兼容性); - 保留原Vue后台管理系统,仅将面向移动端的功能迁移至鸿蒙APP。 - **优势**: - 开发周期短(1-2个月),成本可控; - 原有数据与业务逻辑无需调整。 - **适用场景**: - 需快速推出移动端应用,且对鸿蒙特性依赖度低。 ##### **方案二:深度适配鸿蒙(最大化体验优化)** - **技术选型**: - 使用**ArkUI重写前端**,利用鸿蒙分布式能力(如跨设备数据同步、硬件互助); - 将原有后端服务改造为**微服务架构**(如Spring Cloud),支持鸿蒙端与Web端并行使用。 - **优势**: - 可充分发挥鸿蒙特性(如手机与平板间拖拽管理商品、离线数据自动同步); - 系统扩展性更强,便于未来接入更多终端(如智能穿戴设备)。 - **开发成本**: - 需3-6个月,适合有长期鸿蒙生态规划的企业。 --- #### **3. 迁移过程中的关键技术点** ##### **(1)数据同步与API兼容性** - **接口适配**: - 使用鸿蒙的`@ohos.net.http`模块替代Web的`axios/fetch`,需调整请求头与错误处理逻辑; - 若原API返回数据格式复杂(如嵌套JSON),建议通过**BFF层(Backend for Frontend)** 转换数据格式。 - **示例代码**: ```typescript // 鸿蒙中调用原有Vue后端API import http from '@ohos.net.http'; let httpRequest = http.createHttp(); httpRequest.request("https://api.yoursystem.com/products", { method: http.RequestMethod.GET, header: { 'Content-Type': 'application/json' } }, (err, data) => { if (!err) { let products = JSON.parse(data.result.toString()); // 更新鸿蒙UI } }); ``` ##### **(2)界面迁移策略** - **直接复用逻辑**: - 将Vue的组件逻辑(如商品列表筛选、表单验证)转换为ArkTS代码; - 使用鸿蒙的`List`组件替代Vue的`v-for`渲染,通过`@State`实现数据绑定。 - **差异化设计**: - 针对移动端操作习惯,优化交互流程(如手势滑动删除、拍照上传商品图片); - 利用鸿蒙的`@ohos.multi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值