HarmonyOS Codelabs之Js2JavaCodegen JSFA调用PA工具

想了解更多内容,请访问:
和华为官方合作共建的鸿蒙技术社区
https://harmonyos.51cto.com
1.介绍
如何用JS FA简单高效的调用PA能力?如果还不了解FA和PA概念的小伙伴可以点进链接去详细了解一下。
今天使用js2java-codegen工具重新体验了一把,嗯~,体验不错,来做个分享。
官方文档指导说明:
JS FA(Feature Ability)调用PA (Particle Ability)是使用基于JS扩展的类Web开发范式的方舟开发框架所提供的一种跨语言能力调用的机制,用于建立JS能力与Java能力之间传递方法调用、处理数据返回以及订阅事件上报的通道。开发者可以使用FA调用PA机制进行应用开发,但直接使用该机制需要开发者手动撰写大量模板代码,且模板代码可能与业务代码相互耦合,使得代码可维护性和可读性较差。
想要提升开发效率,开发者可以在DevEco Studio环境中借助js2java-codegen工具自动生成JS FA调用PA代码(目前仅支持InternalAbility调用方式),快速完成FA调用PA应用的开发。
接下来,通过一个简易计算器的实例(界面JS FA实现)看一下JS FA调用PA的开发步骤。
2.效果展示

3.搭建环境
安装DevEco Studio,详情请参考DevEco Studio下载。
设置DevEco Studio开发环境,DevEco Studio开发环境需要依赖于网络环境,亿华云需要连接上网络才能确保工具的正常使用,可以根据如下两种情况来配置开发环境:
如果可以直接访问Internet,只需进行下载HarmonyOS SDK操作。
如果网络不能直接访问Internet,需要通过代理服务器才可以访问,请参考配置开发环境。
下载源码后,使用DevEco Studio 打开项目,模拟器运行即可。
真机运行需要将config.json中的buddleName修改为自己的,如果没有请到AGC上进行配置,参见 使用模拟器进行调试 。
4.项目结构

5.步骤讲解
5.1 配置js2java-codegen工具
工具会根据开发者提供的Java源码生成JS与Java两种语言的模板代码,其中Java模板代码用户无需关心,而JS模板代码需要用户手动调用,因此用户需要自主设置JS模板代码的生成路径。该参数位于ohos -> defaultConfig中,只需添加如下设置即可。
1.配置js代码存放路径 ----2.配置该工具开关

5.2 创建PA服务类,实现提供的服务接口
1.创建计算服务类(CalculateService.java) 并添加注解
注解有主要有3个,
@InternalAbility注解
类注解,用于被使用作InternalAbility的、包含实际业务代码的类(简称InternalAbility类)。只支持文件中public的顶层类,不支持接口类和注解类。云南idc服务商包含一个参数:registerTo,值为需要注册到的Ability类全名。
@ExportIgnore注解
方法注解,用于InternalAbility类中的某些方法,表示该方法不暴露给JS侧来调用。仅对public方法有效。
@ContextInject注解
用于AbilityContext上的注解。该类由HarmonyOS的Java API提供,开发者可通过它获取API中提供的信息。我们一些功能可能会用到上下文,这个注解帮我们把上下文自动注入进来了。

2.实现提供的服务接口
见上图calculateResult函数。
5.3 调用工具编译生成代码
编译方法:Build–Build Haps(s)/App(s)----Build Haps(s)
生成的代码有两份,一份Java代码(CalculateServiceStub.java)

一份JS代码在上面配置的目录(CalculateService.js)

*// This file is automatically generated. Do not modify it!
5.4 编写JS 代码完成调用
1.在index.js 中引用生成的FA接口类 —2.创建FA接口实例----3.调用对应方法

5.5 编写页面布局代码(index.hml)

6.思考总结
1.通过js2java-codegen工具,让js FA调用PA思路变的清晰,注解很简单,生成代码也很便捷。
2.完成业务功能,不用去关注生成的代码。
7.完整代码
附件可以直接下载
https://harmonyos.51cto.com/resource/1495
想了解更多内容,请访问:
和华为官方合作共建的鸿蒙技术社区
https://harmonyos.51cto.com

相关文章
通过激情探索学习(以passion为引导,最大化教程的效果与体验)
摘要:在我们日常的学习和工作中,使用教程是一种常见的学习方法。然而,很多人只是机械地按照教程进行操作,缺乏激情和主动性。本文将以passion作为核心,探讨如何通过激情的方式使用教程,以...2025-11-05- 复制/etc/sysctl.conf文件中的net.ipv4.ip_forward=0,改为net.ipv4.ip_forward=1. 1.2.2025-11-05
- 概述本白皮书提供了有关一般恶意软件操作、IDS事件类型、要求、建议和参考的信息。技术摘要恶意软件恶意软件)是旨在破坏系统运行、窃取数据或未经授权访问网络的代码。常见的恶意软件类型包括病毒、蠕虫、木马、2025-11-05
- 复制iptables-F iptables-X iptables-tnat-F iptables-tnat-X2025-11-05
飞利浦42pf7320(探索飞利浦42pf7320的品质、功能和性能)
摘要:飞利浦42pf7320是一款备受好评的高清电视,拥有出色的画质、丰富的功能和卓越的性能。本文将深入探讨该款电视的各个方面,带您了解这款电视的特点和优势。1.画质表现令人惊叹...2025-11-05
即使是最熟练的团队也会发现,管理网络安全是一件非常具有挑战的事情。在这个不断变化的环境中,团队最关键的技能是什么?更广泛地说,应对网络安全风险的团队主要进行操作,更多的是技术性的工作。长期以来,这一领2025-11-05

最新评论