使用React-JSX编写你的鸿蒙原生应用

背景

鸿蒙提供了基于自研ArtTS的UI开发方式,ArtTS是鸿蒙原生应用后续主推的模式。 我们先通过HelloWorld了解下:

这是一种基于声明式的UI范式,还是很赞的。且第一开发语言是typescript这对前端同学还是很友好的。

不过,在使用ArkTS开发的过程中,越发觉得其UI语法的限制。 作为React重度使用者,习惯了JSX的灵活自由,使用ArtTS确实会觉得束手束脚。

所以这里提供一种使用JSX开发鸿蒙原生应用的方式,主要借助harmonyos-jsx库,github地址

harmonyos-jsx会实时把你的tsx文件转化为等效的ArkTS,还你JSX的自由和灵活。需要注意的是 状态管理仍然需要使用鸿蒙提供的@State等机制。

先来看下ArkTS在编写UI都有哪些限制。

ArkTS的UI限制

在鸿蒙官方文档中以枚举的形式 ,说明了一下ArkTS的语法规范。

其实除了官方提到的这些限制,还有很多我们在开发中会遇到的问题,比如我们不能把一个UI片段赋值给变量,UI片段不能作为函数返回值等等。 假定我们有一个数组反转API, 在React/Flutter 中我们可以直接把UI作为参数传递给函数。

这里本质的原因在于:ArkTS并不把UI当成是编程中的普通数据来处理,UI需要一些特殊的编译过程。这会限制UI的表达能力。

也正因为如此,ArkTS还定义了条件渲染循环渲染 这种特殊的概念。

这些概念在JSX里面是不存在的,一切按照你编程的习惯即可,你需要条件渲染自然而然if/三元表达式,你需要循环渲染自然而然数组遍历等等。

使用JSX开发鸿蒙原生应用

上面说了JSX的灵活自由,这里我们来看下如何使用JSX开发鸿蒙原生应用。

  1. 首次使用需全局安装 harmonyos-jsx
shell 复制代码
npm install -g harmonyos-jsx  
  1. 安装成功之后会提供 hsx命令。 执行--version 判断是否安装成功
shell 复制代码
hsx --version  
  1. 参考HarmonyOS开发文档 创建初始化项目

  2. 进入项目目录,执行如下脚本hsx, 如果是首次执行 此命令将会在ets目录下创建以下文件

    • pages-tsx 目录: 后续的tsx 源码目录
    • arks-global.d.ts
    • tsconfig.json
  3. 使用vscode 或其他你喜欢的IDE,打开项目目录

  4. entry/src/main/ets/pages-tsx目录 创建和编写你的tsx文件即可。 hsx命令会实时把你的tsx文件编译为等效的ArkTS版本, 通过鸿蒙的IDE可实时预览最新UI。

结论

have fun! github地址。欢迎大家issue mergerequeststar

相关推荐
fanruitian2 小时前
uniapp android开发 测试板本与发行版本
前端·javascript·uni-app
rayufo2 小时前
【工具】列出指定文件夹下所有的目录和文件
开发语言·前端·python
RANCE_atttackkk2 小时前
[Java]实现使用邮箱找回密码的功能
java·开发语言·前端·spring boot·intellij-idea·idea
一起养小猫3 小时前
Flutter for OpenHarmony 实战:记账应用数据统计与可视化
开发语言·jvm·数据库·flutter·信息可视化·harmonyos
2501_944525543 小时前
Flutter for OpenHarmony 个人理财管理App实战 - 支出分析页面
android·开发语言·前端·javascript·flutter
森之鸟4 小时前
多智能体系统开发入门:用鸿蒙实现设备间的AI协同决策
人工智能·harmonyos·m
jin1233224 小时前
React Native鸿蒙跨平台完成剧本杀组队详情页面,可以复用桌游、团建、赛事等各类组队详情页开发
javascript·react native·react.js·ecmascript·harmonyos
李白你好4 小时前
Burp Suite插件用于自动检测Web应用程序中的未授权访问漏洞
前端
_waylau4 小时前
【HarmonyOS NEXT+AI】问答08:仓颉编程语言是中文编程语言吗?
人工智能·华为·harmonyos·鸿蒙·仓颉编程语言·鸿蒙生态·鸿蒙6
前端菜鸟日常5 小时前
鸿蒙开发实战:100 个项目疑难杂症汇编
汇编·华为·harmonyos