当前位置: 首页 > news >正文

上海大金空调网站建设公关策划公司

上海大金空调网站建设,公关策划公司,巨野有做网站的公司吗,如何在网站申请做co跨模块引用文件时遇到了一个问题#xff1a; Importing ArkTS files to JS and TS files is not allowed. ArkTSCheck参照官方文档使用#xff1a;Index.ets作为导出配置文件#xff0c;在另一个库中使用遇到此问题 重读官方文档得到解决方法#xff1a;重新创建:…跨模块引用文件时遇到了一个问题 Importing ArkTS files to JS and TS files is not allowed. ArkTSCheck参照官方文档使用Index.ets作为导出配置文件在另一个库中使用遇到此问题 重读官方文档得到解决方法重新创建: Index.ts 作为导出配置文件即可 共享包概述 OpenHarmony提供了两种共享包HARHarmony Archive静态共享包和HSPHarmony Shared Package动态共享包。 HAR与HSP都是为了实现代码和资源的共享都可以包含代码、C库、资源和配置文件最大的不同之处在于HAR中的代码和资源跟随使用方编译如果有多个使用方它们的编译产物中会存在多份相同拷贝而HSP中的代码和资源可以独立编译运行时在一个进程中代码也只会存在一份。 图1 HAR和HSP在APP包中的形态示意图 HSP旨在解决HAR存在的几个问题 多个HAP引用相同的HAR导致的APP包大小膨胀问题。多个HAP引用相同的HARHAR中的一些状态变量无法共享的问题。 HSP的一些约束 HSP及其使用方都必须是Stage模型。HSP及其使用方都必须使用esmodule编译模式。HSP不支持在配置文件中声明abilities、extensionAbilities标签。HSP按照使用场景可以分为应用内HSP和应用间HSP应用间HSP暂不支持。 HAR HARHarmony Archive是静态共享包可以包含代码、C库、资源和配置文件。通过HAR可以实现多个模块或多个工程共享ArkUI组件、资源等相关代码。HAR不同于HAP不能独立安装运行在设备上只能作为应用模块的依赖项被引用。 创建HAR模块 通过DevEco Studio创建一个HAR模块详见创建库模块。HAR模块默认不开启混淆能力开启混淆能力需要把HAR模块的build-profile.json5文件中的artifactType字段设置为obfuscation配置如下所示 {apiType: stageMode,buildOption: {artifactType: obfuscation} }artifactType字段有以下两种取值默认缺省为original。 original不混淆。obfuscation混淆目前仅支持uglify混淆。 需要对代码资产进行保护时建议开启混淆能力混淆能力开启后DevEco Studio在构建HAR时会对代码进行编译、混淆及压缩处理保护代码资产。 注意artifactType字段设置为obfuscation时apiType字段必须设置为stageMode因为Stage模型才支持混淆。 HAR开发注意事项 HAR不支持在配置文件中声明abilities、extensionAbilities组件。HAR不支持在配置文件中声明pages页面。HAR不支持在build-profile.json5文件的buildOption中配置worker。FA模型与Stage模型的HAR不支持相互引用。Stage模型的HAR不能引用AppScope内的内容。在编译构建时APPScope中的内容不会打包到HAR中导致HAR资源引用失败。 导出HAR的ArkUI组件、接口、资源 index.ets文件是HAR导出声明文件的入口HAR需要导出的接口统一在index.ets文件中导出。index.ets文件是DevEco Studio默认自动生成的用户也可以自定义在模块的oh-package.json5文件中的main字段配置入口声明文件配置如下所示 {main: index.ets }导出ArkUI组件 ArkUI组件的导出方式与ts的导出方式一致通过export导出ArkUI组件示例如下 // library/src/main/ets/components/MainPage/MainPage.ets Component export struct MainPage {State message: string Hello Worldbuild() {Row() {Column() {Text(this.message).fontSize(50).fontWeight(FontWeight.Bold)}.width(100%)}.height(100%)} }HAR对外暴露的接口在index.ets导出文件中声明如下所示 // library/index.ets export { MainPage } from ./src/main/ets/components/MainPage/MainPage导出ts类和方法 通过export导出ts类和方法支持导出多个ts类和方法示例如下所示 // library/src/main/ts/test.ets export class Log {static info(msg) {console.info(msg);} }export function func() {return har func; }export function func2() {return har func2; }HAR对外暴露的接口在index.ets导出文件中声明如下所示 // library/index.ets export { Log } from ./src/main/ts/test export { func } from ./src/main/ts/test export { func2 } from ./src/main/ts/test资源 HAR模块编译打包时会把资源打包到HAR中。在编译构建HAP时DevEco Studio会从HAP模块及依赖的模块中收集资源文件如果不同模块下的资源文件出现重名冲突时DevEco Studio会按照以下优先级进行覆盖优先级由高到低 AppScope仅API9的Stage模型支持。HAP包自身模块。依赖的HAR模块如果依赖的多个HAR之间有资源冲突会按照依赖顺序进行覆盖依赖顺序在前的优先级较高。 引用HAR的ArkUI组件、接口、资源 引用HAR前需要先配置对HAR的依赖配置方式可参考引用HAR文件和资源。 引用HAR的ArkUI组件 HAR的依赖配置成功后可以引用HAR的ArkUI组件。ArkUI组件的导入方式与ts的导入方式一致通过import引入HAR导出的ArkUI组件示例如下所示 // entry/src/main/ets/pages/index.ets import { MainPage } from ohos/libraryEntry Component struct Index {State message: string Hello Worldbuild() {Row() {// 引用HAR的ArkUI组件MainPage()Column() {Text(this.message).fontSize(50).fontWeight(FontWeight.Bold)}.width(100%)}.height(100%)} }引用HAR的类和方法 通过import引用HAR导出的ts类和方法示例如下所示 // entry/src/main/ets/pages/index.ets import { Log } from ohos/library import { func } from ohos/libraryEntry Component struct Index {build() {Row() {Column() {Button(Button).onClick((){// 引用HAR的类和方法Log.info(har msg);func();})}.width(100%)}.height(100%)} }引用HAR的资源 通过$r引用HAR中的资源例如在HAR模块的src/main/resources里添加字符串资源在string.json中定义namehello_har和图片资源icon_har.png然后在Entry模块中引用该字符串和图片资源的示例如下所示 // entry/src/main/ets/pages/index.ets Entry Component struct Index {build() {Row() {Column() {// 引用HAR的字符串资源Text($r(app.string.hello_har)).fontSize(50).fontWeight(FontWeight.Bold)// 引用HAR的图片资源Image($r(app.media.icon_har))}.width(100%)}.height(100%)} }应用内HSP开发指导 应用内HSP指的是专门为某一应用开发的HSP只能被该应用内部其他HAP/HSP使用用于应用内部代码、资源的共享。 应用内HSP跟随其宿主应用的APP包一起发布与该宿主应用具有相同的包名和生命周期。 开发应用内HSP HSP模块可以在DevEco Studio中由指定模板创建我们以创建一个名为library的HSP模块为例。基本的工程目录结构大致如下 library ├── src │ └── main │ ├── ets │ │ ├── pages │ │ └── index.ets │ ├── resources │ └── module.json5 └── oh-package.json5 模块module.json5中的type标识模块类型HSP的type是shared。{type: shared }HSP通过在入口文件中导出接口对外提供能力。入口文件在模块oh-package.json5的main中配置。例如 {main: ./src/main/ets/index.ets }导出ts类和方法 通过export导出ts类和方法例如 // library/src/main/ets/utils/test.ts export class Log {static info(msg) {console.info(msg);} }export function add(a: number, b: number) {return a b; }export function minus(a: number, b: number) {return a - b; }对外暴露的接口需要在入口文件index.ets中声明 // library/src/main/ets/index.ets export { Log, add, minus } from ./utils/test导出ArkUI组件 ArkUI组件也可以通过export导出例如 // library/src/main/ets/components/MyTitleBar.ets Component export struct MyTitleBar {build() {Row() {Text($r(app.string.library_title)).fontColor($r(app.color.white)).fontSize(25).margin({left:15})}.width(100%).height(50).padding({left:15}).backgroundColor(#0D9FFB)} }对外暴露的接口需要在入口文件index.ets中声明 // library/src/main/ets/index.ets export { MyTitleBar } from ./components/MyTitleBarHSP中资源使用说明 注意在HSP中通过 r / r/ r/rawfile可以使用本模块resources目录下的资源。 如果使用相对路径的方式例如 在HSP模块中使用Image(“common/example.png”)实际上该Image组件访问的是HSP调用方如entry下的资源entry/src/main/ets/common/example.png。 导出native方法 在HSP中也可以包含C编写的so。对于so中的native方法HSP通过间接的方式导出以导出libnative.so的乘法接口multi为例 // ibrary/src/main/ets/utils/nativeTest.ts import native from libnative.soexport function nativeMulti(a: number, b: number) {return native.multi(a, b); }对外暴露的接口需要在入口文件index.ets中声明 // library/src/main/ets/index.ets export { nativeMulti } from ./utils/nativeTest使用应用内HSP 要使用HSP中的接口首先需要在使用方的oh-package.json5中配置对它的依赖。如果应用内HSP和使用方在同一工程下可以直接本地引用例如 // entry/oh-package.json5 dependencies: {library: file:../library }然后就可以像使用HAR一样调用HSP的对外接口了。 例如上面的library已经导出了下面这些接口 // library/src/main/ets/index.ets export { Log, add, minus } from ./utils/test export { MyTitleBar } from ./components/MyTitleBar export { nativeMulti } from ./utils/nativeTest在使用方的代码中可以这样使用 // entry/src/main/ets/pages/index.ets import { Log, add, MyTitleBar, nativeMulti } from libraryEntry Component struct Index {State message: string Hello Worldbuild() {Row() {Column() {MyTitleBar()Text(this.message).fontSize(30).fontWeight(FontWeight.Bold)Button(add(1, 2)).onClick((){Log.info(add button click!);this.message result: add(1, 2);})Button(nativeMulti(3, 4)).onClick((){Log.info(nativeMulti button click!);this.message result: nativeMulti(3, 4);})}.width(100%)}.height(100%)} }跨包页面路由跳转 若开发者想在entry模块中添加一个按钮跳转至library模块中的menu页面路径为library/src/main/ets/pages/menu.ets那么可以在使用方的代码entry模块下的Index.ets路径为entry/src/main/ets/MainAbility/Index.ets里这样使用 import router from ohos.router;Entry Component struct Index {State message: string Hello Worldbuild() {Row() {Column() {Text(this.message).fontSize(50).fontWeight(FontWeight.Bold)// 添加按钮以响应用户点击Button() {Text(click to menu).fontSize(30).fontWeight(FontWeight.Bold)}.type(ButtonType.Capsule).margin({top: 20}).backgroundColor(#0D9FFB).width(40%).height(5%)// 绑定点击事件.onClick(() {router.pushUrl({url: bundle:com.example.hmservice/library/ets/pages/menu}).then(() {console.log(push page success);}).catch(err {console.error(pushUrl failed, code is ${err.code}, message is ${err.message});})}).width(100%)}.height(100%)}} }其中router.pushUrl方法的入参中url的内容为 bundle:com.example.hmservice/library/ets/pages/menuurl内容的模板为 bundle:包名bundleName/模块名moduleName/路径/页面所在的文件名(不加.ets后缀)
http://www.sadfv.cn/news/131480/

相关文章:

  • 移动端企业网站个人免费网站如何做
  • 嘉兴网站建设设计制作网页游戏开服表送首充
  • 数据图表展示网站校园网站建设多少钱
  • 行业展示类型网站驾校报名网站怎么做
  • 网站建设佰首选金手指二淘宝网站
  • 微信公众号的网站免费建站免费推广的网站
  • 威海网站设计公司嘉兴网络项目建站公司
  • 网站建设公司特色wordpress is_category()
  • 小网站搜什么关键词营销型网站策划怎么做
  • 购物网站建设包括哪些网站怎么做下拉刷新
  • 免费企业网站模板psd电子商务网站开发的背景
  • 南阳网站推广排名酒店网站建设策划书
  • 龙海网站建设国家允许哪几个网站做顺风车
  • 大连网站建设渠道公众号视频网站怎么做
  • 文昌网站建设 myvodo企业网盘系统
  • 大连网站建设是什么点击排名软件哪个好
  • 网站竞价怎么做智慧团建app官网下载
  • 建设网站审核客户做网站要退款
  • 如何设计网站北京南站最新消息
  • 武山县建设局网站郑州网站seo诊断
  • 公司网站数据分析做资质去哪个网站填资料
  • 扬州建设教育信息网站1688的网站特色
  • 做网站可以用自己的主机网站建设沈阳凯鸿
  • 做网站可以赚钱么自己怎么建立个人网站
  • 网上商城代码wordpress添加分类目录seo标题
  • 上海羽贝网站建设门户网站建设内
  • 网站漂浮广告代码做网站充值微信必须是企业
  • 公司做网站是做什么账务处理培训网站建设公司哪家好
  • 浙江做网站多少钱一流导航设计网站
  • 网页设计网站开发需要什么服务商英文