ASCF框架支持采用类似小程序开发技术开发元服务,详情请参考ASCF框架概述。在开始开发前,请先确保已获取并安装ASCF插件。
ASCF框架支持复用小程序代码资产,支持通过转换工具转换为元服务,也支持使用uniapp、Taro等三方框架编译为元服务。转换后都需要针对平台相关功能和特性做适配和修改。
通过小程序转换成ASCF元服务的流程如图所示。

从小程序转换到ASCF元服务后,需要对转换后的工程文件进行处理:
在HarmonyOS 开发者中心上申请注册元服务,如有需要配置域名、权限请参考元服务开发准备。
转换原来小程序平台的特有接口,如登录、支付等接口,将其替换成元服务生态接口。若元服务暂无替代的接口,需要在代码上删除相关功能。详细请参照小程序转换后如何适配。
涉及云服务,需要接入元服务开放能力,请参考适配平台功能和要求。
后续小程序平台工程与元服务ASCF框架工程需要各自独立维护演进,彼此互不影响。
ASCF转换器会自动将文件和支持的接口替换为ASCF框架适配的文件与接口,“暂不支持”的接口会使用TODO标记添加到代码注释中,并且会生成ascf/ascf_src/transform.log(转换日志)和ascf/ascf_src/_ascfConvertReport/index.html(转换报告)文件,转换日志中会说明不支持的接口位置,转换报告支持直接通过浏览器打开,其中会说明转换后的接口、组件支持情况,方便开发者根据平台差异适配为元服务支持的接口。
图1 转换报告位置

具体框架、组件和接口请参考ASCF的API参考使用。处理完transform.log文件中的提示信息后,还需要作如下调整:
按照IDE的错误提示对部分语法差异进行调整。例如:let 语法作用域、变量未定义使用、function、package关键字、以v开头的变量。
如果接入小程序特有特性,需要修改为华为提供的能力,请参考适配平台功能和要求。原来接入小程序特有插件或者云开发,将无法继续使用,需使用自定义组件的方式代替。
如果项目中在node_modules中依赖了vant-weapp等开源库,需要将node_modules中的小程序源码拷贝到源码目录,便于转换工具能够做转换处理。
ASCF工具链提供了帮助开发者拷贝转换的方法,详见:使用npm包。
三方平台通过框架适配转换为元服务的流程如图所示。

三方平台代码导出ASCF框架源码,由三方平台自行处理。
开发者仍需要完成以下步骤适配平台的相关功能和要求:
在HarmonyOS 开发者中心上申请注册元服务,如有需要配置域名、权限请参考元服务开发准备。
通过条件编译隔离元服务和其他平台代码,涉及云服务,需要接入元服务开放能力,请参考适配平台功能和要求。
请参考uniapp官方提供HarmonyOS元服务指南。
适配元服务的建议如下:
仔细阅读开发指南,以适配平台相关功能和规范要求,然后编译为(ASCF范式)后,将编译产物dist/build/mp-harmony拷贝到ascf/ascf_src目录后,参考Hello ASCF工程调试运行。
uniapp条件编译示例:
// #ifdef WEB
console.info('这段代码只在WEB运行');
// #endif
// #ifdef MP-HARMONY
console.info('这段代码只在元服务ASCF框架上运行');
// #endif Taro已经适配支持了ASCF框架,从Taro 4.1.5版本开始支持。请参考官方文档使用。
/** 源码 */
if (process.env.TARO_ENV === 'ascf') {
require('path/to/ascf/name')
} else if (process.env.TARO_ENV === 'h5') {
require('path/to/h5/name')
}
/** 编译后(ascf元服务) */
if (true) {
require('path/to/ascf/name')
}
/** 编译后(H5) */
if (true) {
require('path/to/h5/name')
} 后续开发者仅需维护三方平台端侧代码,ASCF工程通过工具输出,仅对工程文件进行基础信息配置,打包验证。具体请参考基于三方框架编译为ASCF范式。