当前位置:   article > 正文

OpenHarmony npm包文件和资源使用_如何安装openharmony npm包

如何安装openharmony npm包

1.配置OpenHarmony npm包依赖

        引用OpenHarmony npm三方包,包括从OpenHarmony npm仓库进行安装和从本地OpenHarmony npm模块中进行安装两种方式。

  • 引用npm仓中的OpenHarmony npm包,首先需要设置OpenHarmony npm三方包的仓库信息,请在DevEco Studio的Terminal窗口执行如下命令进行设置:
npm config set @ohos:registry=https://repo.harmonyos.com/npm/

        然后通过如下两种方式设置OpenHarmony npm三方包依赖信息:

  • 方式一:在Terminal窗口中,执行如下命令安装OpenHarmony npm三方包,DevEco Studio会自动在工程的package.json中自动添加三方包依赖。
npm install @ohos/vcard --save

方式二:在工程的package.json中设置OpenHarmony npm三方包依赖,配置示例如下:

  1. "dependencies": {
  2. "@ohos/vcard": "^2.1.0"
  3. }

         依赖设置完成后,需要执行npm install命令安装依赖包,依赖包会存储在工程的node_modules目录下。

npm install

 引用本地OpenHarmony npm模块的文件和资源,有如下两种方式:

方式一:在Terminal窗口中,执行如下命令进行安装,并会在package.json中自动添加依赖。

npm install ../library --save

 方式二:在工程的package.json中设置OpenHarmony npm三方包依赖,配置示例如下:

  1. "dependencies": {
  2. "@ohos/library": "file:../library"
  3. }

        依赖设置完成后,需要执行npm install命令安装依赖包,依赖包会存储在工程的node_modules目录下。

npm install

在引用OpenHarmony npm包时,请注意以下事项:

  • 当前只支持在模块和工程下的package.json文件中声明dependencies依赖,才会被当做OpenHarmony依赖使用,并在编译构建过程中进行相应的处理。
  • 引用的模块的compileSdkVersion不能低于其依赖的OpenHarmony npm三方包(可在node_modules目录下,找到引用的npm包的src > main > module.json中查看)。

引用OpenHarmony npm包JS组件

        在JS工程范式中,组件功能由hml承载,开发者可以在JS工程的hml页面通过<element>标签来引入OpenHarmony npm包中的共享JS组件,示例如下:

 

<element name="comp" src="@ohos/library/src/main/js/components/index/index.hml"></element>

 

引用OpenHarmony npm包eTS组件

        eTS是TypeScript的扩展,因此导出和引入的语法与TypeScript一致。在OpenHarmony npm模块中,可以通过export导出eTS组件,示例如下:

  1. // library/src/main/ets/components/MainPage/MainPage.ets
  2. @Entry
  3. @Component
  4. export struct MainPage {
  5. @State message: string = 'Hello World'
  6. build() {
  7. Row() {
  8. Column() {
  9. Text(this.message)
  10. .fontSize(50)
  11. .fontWeight(FontWeight.Bold)
  12. }
  13. .width('100%')
  14. }
  15. .height('100%')
  16. }
  17. }

 然后在其它模块中通过import引入导出的eTS组件,示例如下所示:

  1. // entry/MainAbility/pages/index.ets
  2. import { MainPage } from "@ohos/library"
  3. @Entry
  4. @Component
  5. struct Index {
  6. @State message: string = 'Hello World'
  7. build() {
  8. Column() {
  9. MainPage()
  10. Row() {
  11. Text(this.message)
  12. .fontSize(50)
  13. .fontWeight(FontWeight.Bold)
  14. }
  15. .width('100%')
  16. }
  17. .height('10%')
  18. }
  19. }

 引用OpenHarmony npm包内ts/js方法

        ts/js方法的导出和引用,与eTS页面的引用相同,即在OpenHarmony npm模块中,可以通过export导出ts/js方法,示例如下所示:

  1. // library/index.js
  2. export function func() {
  3. return "[npm] func1";
  4. }

        ts/js方法的导出和引用,与eTS页面的引用相同,即在OpenHarmony npm模块中,可以通过export导出ts/js方法,示例如下所示:

  1. // library/index.js
  2. export function func() {
  3. return "[npm] func1";
  4. }

         然后在其它的ts/js页面中,通过import引入导出的ts/js方法,示例如下所示:

  1. // entry/src/main/js/MainAbility/pages/index/index.js
  2. import {func} from "@ohos/library"
  3. export default {
  4. data: {
  5. title: ""
  6. },
  7. onInit() {
  8. this.title = func();
  9. }
  10. }

 引用OpenHarmony npm包内资源

        支持在OpenHarmony npm模块和依赖OpenHarmony npm的模块中引用OpenHarmony npm模块内的资源。例如在OpenHarmony npm模块的scr/main/resources里添加字符串资源(在string.json中定义,name:hello_npm)和图片资源(icon_npm.png),然后在Entry模块中引用该字符串资源和图片资源的示例如下:

  1. // entry/src/main/ets/MainAbility/pages/index.ets
  2. @Entry
  3. @Component
  4. struct Index {
  5. @State message: string = 'Hello World'
  6. build() {
  7. Column() {
  8. Row() {
  9. Text($r("app.string.hello_npm")) // 字符串资源
  10. .fontSize(40)
  11. .fontWeight(FontWeight.Bold)
  12. }
  13. .width('50%')
  14. Image($r("app.media.icon_npm")) // 图片资源
  15. }
  16. .height('100%')
  17. }
  18. }

        在编译构建HAP中,DevEco Studio会从HAP模块及依赖的模块中收集资源文件,如果不同模块下的资源文件出现重名冲突时,DevEco Studio会按照以下优先级进行覆盖(优先级由高到低):

  • AppScope(仅API9的Stage模型支持)
  • HAP包自身模块
  • 依赖的OpenHarmony npm模块

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/294967
推荐阅读
相关标签
  

闽ICP备14008679号