开源一个HarmonyOS 鸿蒙Next/小程序/Vue/RN UI互转的工具集

开源一个HarmonyOS 鸿蒙Next/小程序/Vue/RN UI互转的工具集

https://github.com/primstar-cool/eevee  
https://gitee.com/primstar/eevee

eevee

一个工具集致力提供鸿蒙arkts/vue/react/rn/各类小程序/快应用的UI代码的互转;

## how to use / 怎么使用

看unit_test中的代码,他演示了如何从源语言转换为eevee标准json,再从eevee标准json转为目标语言。

## source code type / 源语言类型

微信小程序(不支持wxs解析);vue (vue2风格);react_native(仅简单支持);arkts(开发中...);

## destination code type (some of them were outdated and will not be updated) / 目标语言类型(有些过时了将不再更新)

vue2/vue3/react/react native/鸿蒙arkts/安卓快应用/小程序(微信/头条/百度/快手)/图形渲染[cpp(opengl 1.x/2.x/D3D9/D3D11); js(cavas/webgl); as3(flash stage2d/stage3s)]

*unity3d(C#)/ios widget(swift)等我有时间会支持下;Flutter(Dart)/uniapp应该不会支持,它们本就为跨平台设计。

## how about covert logic code / 逻辑代码如何转换

逻辑代码在多平台间互转是几乎不可能的,但是一种到另一种倒是可能的。事实上,笔者有很多支持多平台的项目是同一套代码. 这套工具集致力于UI代码的转换,但会提供一些实例代码帮助完成多平台同构。

## reason of create this library / 为什么做这个库

鸿蒙arkts有点新,创建app没那么容易,它可以帮助开发者转换现有项目。当越来越多的开发者使用arkts作为源代码,它还可以帮助开发者移植到其他平台。遥遥领先。

////开发随想/////

看到HarmonyNext下一代没有安卓了,必然全面拥抱ArkTS,把手头一些东西整理一下,开源一个互转框架。

原始构架是小程序=>ArkTS H5=>ArkTS,由于APP开发,RN/Flutter较多,所以加入了RN。

仅转换UI部分,也就是先解析原始语言的数据=>UI的映射关系,并翻译为目标语言,而逻辑部分,如果想一套代码同构多个平台,会有很多编码规范要求【事实上,笔者所做项目都是一套代码同构的,有JS同构,也有Cpp通过JNI(java)/WebAssembly(js)//alchemy(as3)完成一套代码多处运行的 】,由于各个项目有各个项目的要求,所以对代码不做翻译。

如何集成入项目以及工具链?

这个不是一个交钥匙方案,需要自己集成入工具链,工具都是纯工具函数,实际项目中,gulp,rollup,webpack等都做过集成。
但如果不是最开始就作为同构项目开发,恐怕难以完成转换。而且UI以外的部分同构需要每个项目自己设计。

库的主要工作:

1. 解析原始开发语言的UI部分,生成一个中间文件,也可以叫标准文件。
2. 标准文件翻译为目标语言
3. UI部分做了大量的特性对其,比如小程序=>RN时,RN也会支持冒泡,也支持tag样式,组样式;微信小程序转百度小程序会有功能补齐(例如位操作);对于不支持BackgroundImage的平台,做节点补齐。甚至还有伪类和媒体查询。
4. 当然支持越多功能意味着库越大,如果一个项目一个伪类伪元素都没写,加入支持不仅浪费容量,也浪费性能,所以还有根据项目生成核心库的功能。
4. CSS计算库,可以使仅支持Flex的平台比如RN/快应用支持传统布局,因为开发当年Flex兼容性不好,H5基本用流式布局开发。现在其实可有可无。
5. 标准文件的直接图形渲染,包括webGL,openGL 1.x(固定管线) 2.x+(Shader), Canvas, DX9 DX10, Flash stage,Flash stage3d;不过这次整理出来很多都会放弃了;

更多关于开源一个HarmonyOS 鸿蒙Next/小程序/Vue/RN UI互转的工具集的实战教程也可以访问 https://www.itying.com/category-93-b0.html

16 回复

预备做一个完整可用的demo,api10改了不少东西,开发量有点大

更多关于开源一个HarmonyOS 鸿蒙Next/小程序/Vue/RN UI互转的工具集的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


我看好你,正在学习鸿蒙,大佬加油,

[https://developer.huawei.com/consumer/cn/forum/topic/0207156387434795016?fid=0109140870620153026h](https://developer.huawei.com/consumer/cn/forum/topic/0207156387434795016?fid=0109140870620153026h) +-/$%-+ demo好了,

有要学HarmonyOS AI的同学吗,联系我:https://www.itying.com/goods-1206.html

厉害

遥遥领先 star支持

cke_172.png

执行from_standart_test.js 报错

后来修复了忘记push上去了。

大佬牛啊,再整个Android和iOS的原生转换就好了

RichText采用了HTML渲染,效率较低,也有些bug,比如不能透明,不能自适应高度等,所以改为悠闲使用Span合并,

RichText模式,仅在特别复杂时转换为此模式

支持了inline的Text 合并为RichText
inline text 比如 【AAAAA】【BBBBB】
转成两个Text节点时, 不可能变成【AAAAA】【BBB换行BB】
因为分属两个节点,仅会【BBBBB】整体换行
所以转换时加了功能,临近inline Text节点合并为RichText
当然,这个是一个编译开关,可以关闭

伪类支持

cke_363.png

cke_124.png

多重循环 独立函数模式,需要做重名检测

内联模式

该工具集旨在实现HarmonyOS鸿蒙系统下的Next框架、小程序、Vue以及React Native(RN)UI组件之间的互转。这意味着开发者可以利用该工具集,将基于不同技术栈开发的UI界面快速转换为适用于HarmonyOS的UI组件,从而提高开发效率和代码复用性。

具体来说,该工具集可能包含一系列转换规则和算法,用于解析和转换不同技术栈下的UI描述信息,并生成符合HarmonyOS规范的UI代码。开发者在使用时,只需提供源UI描述信息(如小程序页面的WXML和WXSS代码,或Vue组件的模板和样式代码等),工具集即可自动完成转换工作。

需要注意的是,由于不同技术栈在UI描述、事件处理、数据绑定等方面存在差异,因此该工具集在转换过程中可能需要对部分代码进行手动调整或优化,以确保转换后的UI组件在HarmonyOS上能够正常运行并保持良好的用户体验。

如果在使用该工具集过程中遇到无法解决的问题,建议查阅相关文档或联系工具集的开发者获取支持。如果问题依旧没法解决请联系官网客服,官网地址是:

https://www.itying.com/category-93-b0.html

回到顶部