HarmonyOs开发:两种方式快速实现NEXT版本组件化运行

前言

去年,针对Api9总结了鸿蒙项目的组件化运行,感兴趣的可以查看:HarmonyOS开发:探索组件化模式开发,文章中也给大家提供了脚本,可以很快速的实现,虽然Api进行了升级,但之前的脚本依然可以执行,为了更好了适配NEXT版本,针对之前的脚本做了拓展和优化,由单一模式提供了多模式使用,一种是node脚本,另一种就是hvigor插件形式,相对于旧版本,新版的组件化运行更加的便捷,也更加的简单。

本篇的文章内容如下:

1、重温组件化模式开发

2、NEXT版本运行包和动态共享包差异

3、hvigor插件形式进行组件化

4、node脚本形式进行组件化

5、相关总结

一、重温组件化模式开发

之前对于组件化,无论是Android还是鸿蒙,已经总结了很多相关的文章,为什么采用组件化?最大的原因莫过于解耦,使其功能模块之间相互独立,既方便后续的功能复用,也能团队协作之间明细各自的任务开发,减少一定的冲突;除此之外还有一个最突出的能力,那就是减少编译时间,提高运行测试效率。

二、NEXT版本运行包和动态共享包差异

NEXT版本和之前的Api9基本上一致,没有其它地方的差异性,还是三处不一样,第一处:hvigorfile.ts不同,第二处:module.json5不同,第三处,缺少入口ability,具体的就不罗列了,大家可以看之前的文章即可。

三、hvigor插件形式进行组件化

去年开发脚本的时候,hvigor还不支持脚本开发:

NEXT版本升级之后,对这一行为做了拓展,已经可以支持自定义脚本编写,和Android中gradle类似,与之比较,则大大提高了执行效率。

之前基于Api9,还得需要把脚本复制到项目中,然后,npm命令执行脚本,如今有了hvigor,我们就可以在编译时期进行注入,无须其他的文件导入。

第一步、依赖插件

在hvigor文件夹中的json5文件中,导入插件 "quick-assembly": "1.1.0":

点击安装即可。

第二步、调用插件

在hvigorfile.ts文件中,调用插件方法ohosAssembly:

第三步、构建项目

项目构建完成之后,会在项目的根目录生成一个module.harmony文件:

打开文件,内容如下:

#组件化配置文件
#组件化开关,用于开启全局的指令,控制下面所有的功能。0为关,1为开
moduleSwitch=0
#是否开启组件化,0为可运行包,1为共享包
startModule=0
#开启的组件名字
startModuleName=
#当前脚本执行后,组件默认加载的页面,默认不填是Index.ets
loadPage=

这个文件非常重要,以后所执行的功能必须依赖于这个文件,相对于Api9,目前简化成了四个参数,常用的参数就两个。

moduleSwitch参数:是一个全局的指令参数,它的存在可以确保性能和效率的提升,为0时,则构建项目不再执行任何脚本检查,和正常的项目开发保持一致,为1时,则会执行脚本检查,执行动态包和运行包之间的来回切换;建议:开发时为1,打包或统一运行时改为0。

startModule参数:用于是否开启组件化运行模式,0是切换为可运行模式,1则是还原为动态共享包模式。

startModuleName参数:要执行的组件,无论哪种模式,这个一定要存在,用于切换的目标选项。

loadPage参数:是一个可选参数,用于组件运行之后展示的页面,默认是Index.ets,如果不是,在这里可以修改,一般情况下这个参数无用。

第四步、运行项目

修改配置文件为可运行包:

当组件切换为可运行状态时,就可以点击组件进行运行了,和entry组件运行一样。

如果是真机获模拟器运行,一定要记得选择默认的启动Ability,否则无法进行启动。

组件运行成功:

常见错误解决:

正常切换状态后,不经过编译或者同步项目,信息是无法及时更新的,当我们立即进行运行组件时,一般会报如下两个错误:

错误一:

错误二:

解决方式是,修改完状态后,同步下项目再运行组件,或者遇到错误后,再次运行组件即可。

注意:

如果是脚本运行发生了错误,一般会在项目的根目录下生成一个错误日志moduleError.log,大家务必注意查看,方便大家跟踪日志。

四、node脚本形式进行组件化

node脚本形式和Api9实现的方式很类似,但是NEXT版本的脚本简化了很多冗余的文件,仅仅只有一个文件。

第一步、下载脚本:

脚本下载地址:

https://gitee.com/abnercode/harmony-os-module/tree/master/NEXT

脚本就是一个js文件,下载之后,复制到项目的根目录下即可。

第二步、执行脚本:

脚本概述:

脚本可分为四块,node start为前两块,为固定模式,第三块是自己想要切换的组件名字,最后一块传递0或1,0是切换至运行包状态,1是切换为动态共享包模式,执行案例如下:

脚本运行:

开启运行模式,点击可运行:

node start demo 0

还原动态共享包模式,不可运行:

node start demo 1

除此之外,如果说你的默认展示页面不是Index页面,你也可以自定义展示页面路径,其路径必须和main_pages.json保持一致,执行命令如下:

node start demo 0 pages/demo

如果一致的话,正常执行上面的两个命令即可。

如果你的命令执行错误,会有相应的错误提示:

同样,当命令执行成功时,也会有相应的提示:

第三步、运行组件:

当组件切换为可运行状态时,就可以点击组件进行运行了,和entry组件运行一样。

如果是真机获模拟器运行,一定要记得选择默认的启动Ability,否则无法进行启动。

组件运行成功:

注意:当以主入口entry打包或者项目统一运行时,请记得把之前的运行包还原为动态共享包。

五、相关总结

hvigor插件形式进行组件化和node脚本形式进行组件化,两者是冲突的,也就是说,当两者同时存在的时候,以hvigor插件形式为主,即便node执行了命令,也不会生效,这一点大家须知。

至于使用哪一种,建议使用hvigor插件形式,优点,不用手动的再去执行命令,提高执行效率,当然了,并不是说node命令形式不好,具体开发中,大家可选择自己喜好。

  • 35
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员一鸣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值