鸿蒙开发:hvigor插件中的节点模型HvigorNode

简介: HvigorNode,在实际的开发中,可以辅助我们获取项目及子模块的信息,便于我们对文件的操作,十分的方便,它可以应用与两种插件的实现方式,极大的提高了我们编写插件的效率。

前言


本文API>=13,基于DevEco Studio 5.1.0 Release,版本号5.1.0.828


上篇文章,我们介绍了两种方式,实现了一个hvigor插件的开发,但是只概述了基本的开发流程,并未涉及到具体的代码开发,接下来的几篇文章,我们会重点去了解一下,hvigor插件中的那些API用法,以便于实际的插件开发。


像一些常见的需求,比如构建前的代码检查,基础配置的检查等等,我们往往需要获取当前的项目路径,项目下的各个模块,甚至于项目下的各个文件,那么,这些功能,我们如何获取呢,目前官方中有多种方式供大家选择,我们就一一概述一下。


首先是HvigorNode,它是hvigor中的节点模型接口,通过它,我们可以获取到模块的配置,属性和任务等。


还记得上篇文章中,我们的插件开发是在哪里编写代码的吗?是不是我们自定义了一个插件的方法,实现了一个apply方法,在这个方法中,我们接收了一个参数,这个参数就是HvigorNode类型,里面提供了诸多方法,可以满足我们对项目的操作。


function myPlugin(): HvigorPlugin {
  return {
    pluginId: 'myPlugin',
    apply(node: HvigorNode) {
      // 插件主体
      console.log('我是一个简单的插件');
    }
  }
}


HvigorNode中的方法介绍

1、获取当前节点路径


获取节点路径,也就是获取当前的项目路径,可以getNodePath()方法来获取,代码如下:



2、获取当前节点名称


节点名称,可以通过getNodeName()方法来获取,直接获取的就是当前项目的名字。



3、获取项目下所有的子节点


项目下的子节点获取可以通过subNodes()方法来获取,此方法获取的是独立的模块信息,其他的文件不会返回。



4、根据节点名称获取节点对象


如果你不想通过遍历拿到子节点,你也可以通过已知的模块名字来获取,也就是通过getSubNodeByName()方法。


const subNode = node.getSubNodeByName('entry');
 console.log(subNode);


5、获取父级节点对象


获取父级节点对象,可以getParentNode()方法来获取,使用这个方法有一点需要注意,那就是只适用于项目子节点的获取,如果在项目节点上获取是为undefined的,所以,千万不要直接通过项目节点来获取父节点。


以下的代码是没问题的,通过项目节点获取。


//获取子节点
      node.subNodes((childDode: HvigorNode) => {
        //获取父节点
        const parentNode = childDode.getParentNode();
        console.log(parentNode.getNodeName());
      })

6、节点注册任务

注册任务,它会在hvigor生命周期中的配置阶段中执行,注册任务需完成HvigorTask的实现作为入参对象。

node.registerTask({
    name: 'myTask',
    run() {
        console.log('myTask');
    }
});


7、节点中已注册的Task对象


node.getTaskByName('myTask')


8、pluginId获取当前节点信息


这种情况也能获取到项目的相关信息,比如项目的名字,路径等等。


const appContext = node.getContext(OhosPluginId.OHOS_APP_PLUGIN) as OhosAppContext;
  console.log('projectName:', appContext.getProjectName());


9、获取当前节点已加载的pluginId集合

const allPluginIds = node.getAllPluginIds();
            allPluginIds.forEach((id) => {
                console.log(id);
            })


10、添加拓展属性


node.addExtraOption('key', 'value');


11、根据节点名称获取节点对象

node.getExtraOption('key');

12、添加一个node评估前的回调函数

node.beforeNodeEvaluate(hvigorNode => {
       
      })

13、添加一个node评估后的回调函数

node.afterNodeEvaluate(hvigorNode => {
        
      })


相关总结


HvigorNode,在实际的开发中,可以辅助我们获取项目及子模块的信息,便于我们对文件的操作,十分的方便,它可以应用与两种插件的实现方式,极大的提高了我们编写插件的效率。

本文标签:鸿蒙开发工具/DevEco Studio


相关文章
|
2月前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
314 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
2月前
|
移动开发 JavaScript 应用服务中间件
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
283 5
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
6月前
|
容器
HarmonyOS NEXT仓颉开发语言实战案例:外卖App
仓颉语言实战分享,教你如何用仓颉开发外卖App界面。内容包括页面布局、导航栏自定义、搜索框实现、列表模块构建等,附完整代码示例。轻松掌握Scroll、List等组件使用技巧,提升HarmonyOS应用开发能力。
|
5月前
|
安全 JavaScript API
鸿蒙开发核心要素
鸿蒙开发核心要素
|
2月前
|
移动开发 Rust JavaScript
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
657 4
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
6月前
|
存储 IDE 定位技术
【HarmonyOS 5】鸿蒙组件&模板服务详解 - 助力高效开发的利器
在移动应用开发领域,效率与质量始终是开发者追求的核心目标。鸿蒙系统作为新兴的操作系统,为开发者提供了丰富且强大的开发资源,其中鸿蒙组件&模板服务更是成为开发者快速构建高质量应用的得力助手。
238 0
HarmonyOS NEXT仓颉开发语言实战案例:电影App
周末好!本文分享使用仓颉语言重构ArkTS实现的电影App案例,对比两者在UI布局、组件写法及语法差异。内容包括页面结构、列表分组、分类切换与电影展示等。通过代码演示仓颉在HarmonyOS开发中的应用。##仓颉##ArkTS##HarmonyOS开发
|
6月前
|
容器
HarmonyOS NEXT仓颉开发语言实战案例:健身App
本期分享一个健身App首页的布局实现,顶部采用Stack容器实现重叠背景与偏移效果,列表部分使用List结合Scroll实现可滚动内容。代码结构清晰,适合学习HarmonyOS布局技巧。
HarmonyOS NEXT仓颉开发语言实战案例:小而美的旅行App
本文分享了一个旅行App首页的设计与实现,使用List容器搭配Row、Column布局完成个人信息、功能列表及推荐模块的排版,详细展示了HarmonyOS下的界面构建技巧。
|
2月前
|
移动开发 Android开发
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
177 0

热门文章

最新文章