From 140e3bed51ceb6a4106bac3c4193f34384757eca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E9=98=B3?= Date: Tue, 9 Apr 2024 16:01:41 +0800 Subject: [PATCH 01/14] =?UTF-8?q?=E6=B7=BB=E5=8A=A0harmony-hybrid=E7=9A=84?= =?UTF-8?q?=E6=96=87=E6=A1=A3=E7=9B=AE=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/harmony-hybrid/index.md | 49 ++++++++++++++++++++++++++++++++++++ sidebars.js | 3 ++- 2 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 docs/harmony-hybrid/index.md diff --git a/docs/harmony-hybrid/index.md b/docs/harmony-hybrid/index.md new file mode 100644 index 000000000000..e1b58e63c476 --- /dev/null +++ b/docs/harmony-hybrid/index.md @@ -0,0 +1,49 @@ +--- +title: Harmony Hybrid +--- + +:::info +Taro v3.6.8+ 开始支持 +::: + +## 简介 + +## 快速编译运行 + +### H5侧编译运行 + +### 壳工程编译运行 + +## 添加现有鸿蒙工程 + +### 简单集成(TaroWebContainer) + +### 多容器和容器共用集成(TaroHybrid) + +## 进阶教程 + +### 混合路由 + +### 小程序内置及热更新 + +### 扩展原生Api + +### 鸿蒙折叠屏适配指导 + +### 全面屏适配指导 + +### 访问控制权限二次弹窗指导 + +### 性能优化:同步调用走缓存 + +### Taro.request请求方式选择(原生/js) + +### 同层渲染 + + +## FAQ + +### 原生导航条影响Fixed布局 + + + diff --git a/sidebars.js b/sidebars.js index 697418b16000..b91fc317d7be 100644 --- a/sidebars.js +++ b/sidebars.js @@ -71,7 +71,8 @@ module.exports = { type: 'category', items: ['react-native', 'react-native-remind'], }, - 'harmony' + 'harmony', + 'harmony-hybrid/index' ], 进阶指南: [ 'config-detail', From 20249ed670767c52833c53082fdcb8494b45147e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E9=98=B3?= Date: Tue, 9 Apr 2024 16:17:28 +0800 Subject: [PATCH 02/14] =?UTF-8?q?=E5=88=86=E9=85=8D=E4=BA=BA=E5=91=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/harmony-hybrid/index.md | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/docs/harmony-hybrid/index.md b/docs/harmony-hybrid/index.md index e1b58e63c476..1aebc6f5a054 100644 --- a/docs/harmony-hybrid/index.md +++ b/docs/harmony-hybrid/index.md @@ -7,43 +7,56 @@ Taro v3.6.8+ 开始支持 ::: ## 简介 +@华为-漆灿,@58-刘阳 ## 快速编译运行 ### H5侧编译运行 +@华为-漆灿 ### 壳工程编译运行 +@华为-漆灿 ## 添加现有鸿蒙工程 ### 简单集成(TaroWebContainer) +@华为-漆灿 ### 多容器和容器共用集成(TaroHybrid) +@58-刘阳 ## 进阶教程 ### 混合路由 +@58-刘阳 ### 小程序内置及热更新 +@58-张志新 ### 扩展原生Api +@58-孔校军 ### 鸿蒙折叠屏适配指导 +@58-刘阳 ### 全面屏适配指导 +@58-刘阳 ### 访问控制权限二次弹窗指导 +@华为-漆灿 ### 性能优化:同步调用走缓存 +@华为-漆灿,与@58-常帅 ### Taro.request请求方式选择(原生/js) +@华为-漆灿 ### 同层渲染 - +@华为-漆灿 ## FAQ ### 原生导航条影响Fixed布局 - +@58-刘阳 From 234f78db100f19e649b0f7668481ac0f5b95c4c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E9=98=B3?= Date: Tue, 9 Apr 2024 17:35:53 +0800 Subject: [PATCH 03/14] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=83=A8=E5=88=86?= =?UTF-8?q?=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/harmony-hybrid/index.md | 111 +++++++++++++++++++++++++++++++++-- 1 file changed, 107 insertions(+), 4 deletions(-) diff --git a/docs/harmony-hybrid/index.md b/docs/harmony-hybrid/index.md index 1aebc6f5a054..f3125fd9e25f 100644 --- a/docs/harmony-hybrid/index.md +++ b/docs/harmony-hybrid/index.md @@ -37,10 +37,100 @@ Taro v3.6.8+ 开始支持 @58-孔校军 ### 鸿蒙折叠屏适配指导 -@58-刘阳 +@58-刘阳 Done + +默认情况下,设计尺寸是750px,Taro适配不同手机分辨率的方式是等比缩放,在鸿蒙折叠屏展开的状态下,等比放大的效果不满足华为应用商店上架要求。 + +**建议的适配方案:** +1. 最大放大比例不超过1.2倍 +2. 宽度不基于750px来布局,基于flex自适应 + +最大放大比例不超过1.1倍的配置: +```javascript +// 修改config/index.js +export default defineConfig(async (merge, { command, mode }) => { + const baseConfig = { + // .... + h5: { + // .... + postcss: { + pxtransform: { + enable: true, + config: { + baseFontSize: 20, + maxRootSize: 24, // 最大不超过1.2倍 + minRootSize: 10, // 最小不超过0.5倍 + } + }, + // .... + } + }, + // .... + } + // .... +}) +``` + + +### 沉浸式适配指导 +@58-刘阳 Done + +[鸿蒙官方适配指南](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-develop-apply-immersive-effects-0000001820435461-V5#section231547103814)提供了两个种方案:窗口全屏布局方案 及 组件安全区方案 + +建议使用“窗口全屏布局方案”,默认全屏模式,再处理状态栏及导航条的避让。 + +**全屏模式下的状态样的避让:** 通过原生创建一个SafeArea组件实现,而不通过JS实现 +```typescript +// 在UIAbility里,全局保存状态栏的安全高度 +const systemAvoidArea = windowClass.getWindowAvoidArea(window.AvoidAreaType.TYPE_SYSTEM); +const topRectHeight = systemAvoidArea.topRect.height +AppStorage.setOrCreate('topRectHeight', `${topRectHeight}px`); + +// 自定义SafeArea组件 +@Component +export struct SafeArea { + @StorageProp('topRectHeight') topRectHeight: string = '0px' + + @BuilderParam child: ()=>void + + build() { + Column() { + Row() + .width('100%') + .height(this.topRectHeight) + .backgroundColor(0xFFFFFF) + Column(){ + this.child() + } + .width('100%') + .layoutWeight(1) + } + .width('100%') + .height('100%') + } +} + +// Taro Hybrid的布局 +@Entry +@Component +struct TaroHybridPage { + build() { + Stack(){ + SafeArea(){ + TaroHybrid() + } + } + } +} +``` + +**全屏模式下的导航条的避让:** 通过鸿蒙Web组件支持安全边界,给H5的底部bar设置margin +```css +padding-bottom: env( safe-area-inset-bottom); +``` + +`注意:` 支持安全区域的鸿蒙单内核系统暂未发布 -### 全面屏适配指导 -@58-刘阳 ### 访问控制权限二次弹窗指导 @华为-漆灿 @@ -57,6 +147,19 @@ Taro v3.6.8+ 开始支持 ## FAQ ### 原生导航条影响Fixed布局 -@58-刘阳 +@58-刘阳:Done + +**原因:** Web容器与原生导航栏之间是层叠布局,为了不影响H5页面的内容展示,Taro Harmony给每个Page设置了一个padding-top值,其值来自原生注入的一个变量 + +```typescript +// Web组件加载时,原生会给js侧注入的代码: +var navigationHeight = ${this.navigationBarHeight}; + +// 使用方法 +window.navigationHeight +``` + +当存在原生导航栏时,fixed布局需要添加一个top值,其值为window.navigationHeight + From 7cfbe44649852f0d88ef81330bbc2925153f8814 Mon Sep 17 00:00:00 2001 From: changshuai01 Date: Wed, 10 Apr 2024 11:08:46 +0800 Subject: [PATCH 04/14] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E6=80=A7?= =?UTF-8?q?=E8=83=BD=E4=BC=98=E5=8C=96=E5=90=8C=E6=AD=A5=E8=B0=83=E7=94=A8?= =?UTF-8?q?=E8=B5=B0=E7=BC=93=E5=AD=98=E7=9A=84=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/harmony-hybrid/index.md | 47 +++++++++++++++++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/docs/harmony-hybrid/index.md b/docs/harmony-hybrid/index.md index f3125fd9e25f..18c300714a3a 100644 --- a/docs/harmony-hybrid/index.md +++ b/docs/harmony-hybrid/index.md @@ -136,7 +136,52 @@ padding-bottom: env( safe-area-inset-bottom); @华为-漆灿 ### 性能优化:同步调用走缓存 -@华为-漆灿,与@58-常帅 +taro的NativeApi,是taro暴露给鸿蒙实现的原生方法。使得Taro具备调用原生的能力。 + +对于NativeApi中的同步方法,每次调用都要执行原生代码逻辑,频繁调用必然导致系统开销增加和耗时增加。所以taro内部对同步方法增加了缓存机制。比如"getSystemSetting"、"getWindowInfo"等。 +如果应用层想扩展,对额外的同步方法使用缓存机制以提高执行效率,则可以通过如下步骤扩展使用缓存的方法: + +#### 明确使用缓存的方法名 +``` +let list = new ArrayList(); +list.add("youMethodName1") +list.add("youMethodName2") + +TaroHybridManager.setCacheSyncMethods(list) +``` + +list是一个方法名的列表,用于标识哪些NativeApi中的方法使用缓存。这里的youMethodName1、youMethodName2为要使用缓存的方法名。 + +#### 监听数据变化更新缓存 +同步方法使用缓存机制可以极大加快api响应速度,但是需要及时更新缓存中的数据。开发者需要在合适的时机监听数据变化,并通过如下方法更新数据 + + +``` +nativeUpdater.update(p: NativeApiPair, v?: any) +``` +举例说明: + +1. youMethodName1方法执行全量数据更新(无入参的情况): + +``` +nativeUpdater.update(new NativeApiPair("YouMethodName1",[])) +``` + + +2. youMethodName1方法执行全量数据更新(有入参的情况): + +``` +nativeUpdater.update(new NativeApiPair("youMethodName1",["param1",123])) +``` +3. youMethodName1方法执行局部数据更新(仅更新其中某个字段:myField): + +``` +nativeUpdater.update(new NativeApiPair("youMethodName1",["param1",123],"myField"),"newData") +``` +#### 注意 +1. 使用缓存机制的方法,必须是同步方法。 +2. 使用缓存机制的方法,在数据发生变化时必须及时更新缓存,并且对数据发生变化的场景做全方位覆盖。否则会带来获取到的数据不是最新的问题。 + ### Taro.request请求方式选择(原生/js) @华为-漆灿 From 7aca403c6a66f68eefb55a8b660dad3caba046dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E9=98=B3?= Date: Wed, 10 Apr 2024 16:21:33 +0800 Subject: [PATCH 05/14] =?UTF-8?q?=E5=AE=8C=E6=88=90=E5=88=86=E9=85=8D?= =?UTF-8?q?=E7=9A=84=E6=96=87=E6=A1=A3=E7=BC=96=E5=86=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/harmony-hybrid/index.md | 129 +++++++++++++++++++++++++++++-- static/img/taroharmonyhybrid.jpg | Bin 0 -> 337296 bytes 2 files changed, 124 insertions(+), 5 deletions(-) create mode 100644 static/img/taroharmonyhybrid.jpg diff --git a/docs/harmony-hybrid/index.md b/docs/harmony-hybrid/index.md index 18c300714a3a..28ee5f1a3fb6 100644 --- a/docs/harmony-hybrid/index.md +++ b/docs/harmony-hybrid/index.md @@ -7,7 +7,15 @@ Taro v3.6.8+ 开始支持 ::: ## 简介 -@华为-漆灿,@58-刘阳 +@华为-漆灿 +@58-刘阳 Done + +Taro Harmony Hybrid容器是为让Taro小程序代码可以完整的运行在鸿蒙单内核系统里,在Taro H5平台的基础上,基于原生壳工程的jsbridge能力,扩展H5平台不支持的小程序Api能力,让Taro小程序0成本运行在鸿蒙系统。 + +此方案不同于Taro的Harmony原生方案,其运行时还是Webview,重点解决Api切换的问题。 + +![taroharmonyhybrid](@site/static/img/taroharmonyhybrid.jpg) + ## 快速编译运行 @@ -17,18 +25,127 @@ Taro v3.6.8+ 开始支持 ### 壳工程编译运行 @华为-漆灿 -## 添加现有鸿蒙工程 +## 集成到现有鸿蒙工程 ### 简单集成(TaroWebContainer) @华为-漆灿 ### 多容器和容器共用集成(TaroHybrid) -@58-刘阳 +@58-刘阳 Done + +**使用方法:** +```typescript +// windowStage.loadContent里初始化 和 预加载 +windowStage.loadContent('xxx', storage, (err, data) => { + // 全局初始化 + TaroHybridManager.init({ + uiAbilityContex: this.context, + domain: 'https://customer.domain.com', // 小程序的域名,注意:此处不添加/结尾 + injectNativeMethod: (uiAbilityContext: common.UIAbilityContext) => { // 扩展原生API + ... + } + }) + // 预加载,可选,不是必须 + TaroHybridManager.preLoader( + windowStage.getMainWindowSync().getUIContext(), + "/xx/index.html", // html的path路由 + "/pages/index/index" // Taro小程序的Page路径 + ) +}) + +// 创建TaroHybrid页面(例子是基于Entry实现) +export interface TaroHybridRouterParams { + indexHtmlPath: string, + taroPath: string +} +export const RouterToTaroHybrid = (params: TaroHybridRouterParams) => { + // 跳转之前先加载url,目的是为了提升新页面的打开速度 + TaroHybridManager.loadUrl(params.indexHtmlPath, params.taroPath); + + setTimeout(()=>{ + router.pushUrl({ + url: 'xxx/TaroHybridPage', // 鸿蒙原生Page的路径,不是Taro小程序的Page + params: params + }, router.RouterMode.Standard) + }, 200) +} + +@Entry +@Component +struct TaroHybridPage { + @State pageState: HostPageState = HostPageState.PageInit; + private indexHtmlPath: string = (router.getParams() as TaroHybridRouterParams).indexHtmlPath + private taroPath: string = (router.getParams() as TaroHybridRouterParams).taroPath + + onPageShow(): void { + this.pageState = HostPageState.PageOnShow + } + onPageHide(): void { + this.pageState = HostPageState.PageOnHide + } + onBackPress(): boolean | void { + const instance = TaroHybridManager.getCoreInstance(this.indexHtmlPath) + if (!instance) { + return false; + } + return TaroHybridManager.onBack(instance.builderData.taroWebController) + } + + build() { + Stack({alignContent: Alignment.TopStart}){ + SafeArea(){ + TaroHybrid({ + indexHtmlPath: this.indexHtmlPath, + taroPath: this.taroPath, + pageState: this.pageState + }) + } + } + } +} + +``` + +**TaroHybrid的设计思路:** +1. 多容器的判断依据:html的Path路径为判断依赖,相同则共用,不同则新建载体页 +2. 容器共用的思路:通过鸿蒙的NodeContainer + NodeController实现 +3. 注意: + 1. 容器共用存在一个问题:相邻两个原生Page之间如何共用容器,页面切换动画时,会有一个页面白屏,进入和退出时都会出现,尽量避免相邻两个原生Page之间共用容器。 ## 进阶教程 ### 混合路由 -@58-刘阳 +@58-刘阳 Done + +在原生与TaroHybrid混合鸿蒙应用中,如果使用了容器共用,用户的路由栈会比较复杂,当在Taro Hybrid页面时,用户使用原生的物理返回时,需要区分是Web容器的返回,还是原生的返回。 + +TaroHybrid组件已经解决了此问题,其思路为: +1. 原生跳转打开的taro页面,添加query参数from=native +2. 原生的onBackPress逻辑里,获取当前url,判断有没有参数from=native,如果有则走原生路由返回,如果没有则走Web组件的backward逻辑 + +```typescript +static onBack(taroWebController: TaroWebController): boolean { + let curUrl = taroWebController.webController.getUrl(); + + if (curUrl?.endsWith('?from=native')) { //web回退到原生 + // Web先返回 + if (taroWebController.accessBackward()) { + setTimeout(()=>{ + taroWebController.backward(); + }, 200) + } + // 回退到原生 + return false; + } + if (taroWebController?.accessBackward()) { // web回退 + taroWebController?.backward(); + // 保留在当前Web页面 + return true; + } + // 回退到原生 + return false; + } +``` ### 小程序内置及热更新 @58-张志新 @@ -36,7 +153,9 @@ Taro v3.6.8+ 开始支持 ### 扩展原生Api @58-孔校军 -### 鸿蒙折叠屏适配指导 +### 鸿蒙一多适配指导 + +#### 鸿蒙折叠屏适配指导 @58-刘阳 Done 默认情况下,设计尺寸是750px,Taro适配不同手机分辨率的方式是等比缩放,在鸿蒙折叠屏展开的状态下,等比放大的效果不满足华为应用商店上架要求。 diff --git a/static/img/taroharmonyhybrid.jpg b/static/img/taroharmonyhybrid.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d4f3595a98c9e24571d688c4322720a20e1744fb GIT binary patch literal 337296 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 NyASJk6(Z%a=Rcp>AvFL1 literal 0 HcmV?d00001 From 1afa24fd1b91f7ce96540bc611283880c05c5c4d Mon Sep 17 00:00:00 2001 From: heweishui Date: Thu, 11 Apr 2024 10:07:54 +0800 Subject: [PATCH 06/14] =?UTF-8?q?fix:=20=E4=BF=AE=E6=94=B9=E5=90=8C?= =?UTF-8?q?=E5=B1=82=E6=B8=B2=E6=9F=93=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/harmony-hybrid/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/harmony-hybrid/index.md b/docs/harmony-hybrid/index.md index 28ee5f1a3fb6..56c6d3e9bdad 100644 --- a/docs/harmony-hybrid/index.md +++ b/docs/harmony-hybrid/index.md @@ -306,7 +306,7 @@ nativeUpdater.update(new NativeApiPair("youMethodName1",["param1",123],"myField" @华为-漆灿 ### 同层渲染 -@华为-漆灿 +预计后续530支持 ## FAQ From 662689200acfddb54f74f581cda347c99e0d4e9e Mon Sep 17 00:00:00 2001 From: chenai02 <1766431377@qq.com> Date: Thu, 11 Apr 2024 19:44:46 +0800 Subject: [PATCH 07/14] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E7=83=AD?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/harmony-hybrid/index.md | 237 ++++++++++++++++++++++++++++++++++- 1 file changed, 235 insertions(+), 2 deletions(-) diff --git a/docs/harmony-hybrid/index.md b/docs/harmony-hybrid/index.md index 28ee5f1a3fb6..711b011458af 100644 --- a/docs/harmony-hybrid/index.md +++ b/docs/harmony-hybrid/index.md @@ -147,8 +147,241 @@ static onBack(taroWebController: TaroWebController): boolean { } ``` -### 小程序内置及热更新 -@58-张志新 +### 小程序内置及热更新 (待完善) + 待完善 +#### 方案简介 + +动态下开发台吗,在不发布新版本的情况下修复`bug`和发布新功能,绕开应用商店的审核机制,避免长时间审核以及多次被拒绝造成的成本问题,缩短用户取得新版本的流程,改善用户体验。 + +#### 具体实现 + +##### 1、资源拦截并加载本地资源 + +在业务较为复杂的场景时,项目通常分为多个`bundle`,热更新模块能够支持更新单独某个`bundle`服务。在`web`组件的`onInterceptRequest`中,可以进行资源拦截。通过`url`解析出`path`后,通过`path`获取对应的`bundle`信息,进而构建相应的响应返回给`web`组件。`MiniRawFileDataSource.getBizByPath`可以获取本地缓存中的`bundle`信息,`MiniLocalFileDataSource.fileExist`可以根据位置判断资源是否存在。 + +```ts +path = path.split('#')[0] +wbLogger.debug('TaroWeb', 'intercepter path=%{public}s', path) +let biz = MiniRawFileDataSource.getBizByPath(path) //获取业务标识 +const lastVerInfo = LocalUpdateManagerInstance.getLastVersionInfo(biz) +if (lastVerInfo?.diskCachePath) { // 走本地缓存 + if (!path || !MiniLocalFileDataSource.fileExist(lastVerInfo?.diskCachePath, path)) { + return null; + } + wbLogger.debug('TaroWeb', 'useLocalCacheResource path=%{public}s', path) + return MiniLocalFileDataSource.getFileOnResponseWeb(lastVerInfo?.diskCachePath, path) + } +``` + +##### 入口函数--`updateMiniOnLaunch` + +入口函数`updateMiniOnLaunch`接收一个`context`,首先初始化了基类`UpdateManager`,然后获取了`rawfile`目录下的文件内容,并传入到了`updateAllMini`中进行逻辑处理。 + +```ts +updateMiniOnLaunch(context: AppContext.UIAbilityContext) { + this.reset(context) + wbLogger.debug('LocalUpdateManager',`update start`); + this.updateAllMini(context,this.miniRepository.getMiniRawList(context)).then((result: Array) => { + if (result) { + wbLogger.debug('LocalUpdateManager',`update success ${result}`); + } + }).catch((error: Error) => { + wbLogger.error('LocalUpdateManager','update Error :', error); + }) +} +``` + + + +##### 1、获取`rawfile`文件信息--`getMiniRawList` + +从全局存储中拿出初始化时存储的`rawfile`文件名,根据该文件名称,获取该文件夹下所有的文件信息。 + +```ts +getRawMiniList(context: common.Context): Array{ + let rawFile = GlobalThis.getInstance().getRawFile(); + return context.resourceManager.getRawFileListSync(rawFile); +} +``` + +##### 2、更新所有的资源包信息---`updateAllMini` + +该函数接收一个`context`和`rawfile`文件信息,返回一个`Promise`对象。通过`rawfile`文件信息,构建`LocalVersionInfo`实例对象,该对象存储了对应文件的版本号、业务标识`biz`, 以及`rawfile`路径,将其存储到`UpdateConfig`单例的`Map`对象中,这样在资源拦截时可以从该`Map`中通过相应的业务标识获取到对应资源的信息。`rawfile`目录下的资源可能不是最新的,需要与本地缓存进行对比,如果本地缓存中没有任何资源,则需要将`rawfile`的资源复制到本地沙箱相应位置中,这样可以通过字节码优化,能提高性能。由于`rawfile`文件复制到了沙箱,这样沙箱资源一直都是最新的,所以需要更新存储在`UpdateConfig`单例的`Map`对象的资源信息。 + +```ts + async updateAllMini(context: AppContext.UIAbilityContext,miniList:Array) : Promise>{ + return new Promise((resolve, reject) => { + let miniArray = new Array() + try { + if (miniList) { + for (let index = 0; index < miniList.length; index++) { + const element = miniList[index]; + let splits = FileUtils.checkMiniFileNameFormat(element) + let miniInfo: LocalVersionInfo | null = null + if (splits) { + miniInfo = new LocalVersionInfo(splits[1], splits[0],'',this.miniRepository.getRawCachePath(element)) + UpdateConfig.getInstance().setOrReplaceMiniInfo(miniInfo.biz, miniInfo) + } + if (miniInfo) { + if (GlobalThis.getInstance().getDiskUpdateEnable()) { + this.updateDiskSingleMini(context, miniInfo) + } + wbLogger.debug('LocalUpdateManager',`VersionInfo miniInfo:${miniInfo.localVersion},biz:${miniInfo.biz},diskCachePath:${miniInfo.diskCachePath},rawCachePath:${miniInfo.rawCachePath}`); + miniArray.push(miniInfo) + } + } + //TODO-JasonZhang 热更新接口请求 + } + resolve(miniArray) + } catch (err) { + reject(err) + } + }) + } + updateDiskSingleMini(context: AppContext.UIAbilityContext,versionInfo:LocalVersionInfo){ + // 获取本地最新的版本号 + let localVersionInfo = this.miniRepository.readDiskLastMiniBizInfo(context,versionInfo.biz) + // 本地无内置版本,则迁移RawFile小程序资源到磁盘缓存目录为初始版本 + if (localVersionInfo && (localVersionInfo?.diskCachePath==''|| localVersionInfo?.localVersion < versionInfo.localVersion)) { + let result = this.miniRepository.copyMiniRawUnzipDisk(context,versionInfo) + if (result) { + versionInfo.localVersion = result.localVersion + versionInfo.diskCachePath = result.diskCachePath + } + wbLogger.debug('LocalUpdateManager',`copied success ${result}`); + }else{ + versionInfo.localVersion = localVersionInfo.localVersion + versionInfo.diskCachePath = localVersionInfo.diskCachePath + } + } +``` + +#### 使用说明 + +##### `arkts`端配置 + +热更新配置分为三步,首先需要配置`rawfile`内资源顶层文件夹名称,以壳工程资源为例`rawfile/spa/`,需要配置`spa`名称;其次,需要配置云端资源信息的`url`生成函数,这样当资源需要更新时可以从该地址获取相应信息;最后,启动热更新模块。 + +```tsx +onCreate(want: Want) { + // ... other code + GlobalThis.getInstance().setRawFile('spa') + UpdateConfig.getInstance(). + LocalUpdateManagerInstance.updateMiniOnLaunch(this.context) + } +``` + +###### 1、配置位置 + +热更新的启动位置,一般放在某个页面的`aboutToAppear`或者应用被打开时的`onCreate`中,热更新涉及有`http`请求,尽量减少热更新模块的执行。 + +###### 2、导入包 + +需要导入`LocalUpdateManagerInstance`实例,以及配置热更新模块的对象`UpdateConfig` + +``` tsx +import {LocalUpdateManagerInstance, UpdateConfig} from '@ohos/web-container' +``` + +###### 3、热更新初始配置 + +在执行入口函数前,需要对热更新模块进行配置初始化。`UpdateConfig`对象可以配置四个参数,**第一个参数和第二个参数为必须配置参数,第三个和第四个参数为选配**。其中第一个参数为最新离线资源配置的地址,需要用户按照字段配置好;第二个参数为初始的版本号(可以是`rawfile`路径下资源的版本),该版本号将会与第一个参数进行拼接,形成完成的`url`。原生端根据形成的`url`发起请求以获取服务端离线资源配置信息,服务端依据相关规则将字段返回,分两种情况,**需要更新离线资源和本地资源是最新的**。**后续的更新与该版本号无关,只与服务端最新离线资源配置相关。** + +```tsx +const updateConfig = new UpdateConfig('http://127.0.0.1:8080:/apis/config?local_version=', '0') +LocalUpdateManagerInstance.setUpdateConfig(updateConfig) +``` + +**1、需要更新离线资源** + +假设初始版本号为`0`,服务端的最新离线资源版本为`1`,则需要更新。服务端收到原生端的请求后,获取`local_version`字段进行对比,根据相关规则将字段传回原生端。服务端配置字段可以参照如下所示: + +```json +{"code": 200, "message": "request OK", "data": {"mini_download_url": "http://127.0.0.1/mpharmony/mpharmony.zip", "mini_version": 1}} +``` + +服务端需要配置上述四个字段,其中,`data`字段中的`mini_download_url`字段表示需要下载离线资源路径,热更新模块依据这个路径进行下载最新配置。 + +**注意:这里的`0`只是用例,后续的更新与该版本号无关,只与服务端最新离线资源配置相关。** + +**2、本地资源是最新的** + +假设初始版本号为`1`,服务端的最新离线资源版本为`1`,则不需要更新。服务端收到原生端的请求后,获取`local_version`字段进行对比,根据相关规则将字段传回原生端,服务端配置字段可以参照如下所示: + +```json +{"code": "300", "message": "latest version"} +``` + +**注意:这里的`1`只是用例,后续的更新与该版本号无关,只与服务端最新离线资源配置相关。** + +###### 4、排序算法配置(选配) + +此外,热更新模块会保留两个历史版本,会在下次启动时删除多余版本。此时需要对离线版本进行排序,默认支持的排序算法是`2.1.0 < 11.0.1`。用户可以自己实现排序算法用以适配不同的版本号,伪代码如下所示: + +```ts +/** + * + * @param v1 + * @param v2 + * @returns {boolean} is v1 bigger than v2 + */ + +function versionCompare(v1: string, v2: string) { + if (v1 > v2){ + return true + } + return false +} +``` + +热更新模块配置如下所示: + +```tsx +const updateConfig = new UpdateConfig('http://127.0.0.1:8080:/apis/config?local_version=', '0', true, versionCompare) +LocalUpdateManagerInstance.setUpdateConfig(updateConfig) +``` + +第三个参数为是否开启自定义排序算法配置,默认为`false`,`false`会执行默认的排序算法 + +4、启动,启动热更新模块入口函数时需要传递当前页面的上下文,下载的离线资源会依据上下文存储。 + +```tsx +LocalUpdateManagerInstance.updateMiniOnLaunch(this.context) +``` + +##### `js`端配置 + +**注意:因为该配置实现的方法需要在原生端被调用,所以需要这些方法要在热更新模块启动前进行配置,如果放在热更新启动后,可能无法生效** + +热更新模块提供了一个对象,注入到了`js`端,这样用户可以依据业务来决定是否需要更新。 + +注入到`js`端的方法如下所示: + +```tsx +applyUpdate(){} +onCheckForUpdate(listener: (hasUpdate: boolean)=>void){} +onUpdateReady(listener: (updatedPath: string)=>void){} +onUpdateFailed(listener: ()=>void){} +``` + +用户可以在`js`端通过预先注入的代理对象`native`调用这些方法,用以实现相应的业务,实现例子如下所示: + +```ts +const updateManager = Taro.getUpdateManager() +updateManager.onCheckForUpdate(function listener(hasUpdate: boolean){ + if (!hasUpdate){ + return + } + updateManager.onUpdateReady(function listener(updatedPath: string){ + updateManager.applyUpdate() + }) +}) +updateManager.onUpdateFailed(function listener(){ + console.log("UpdateFailed") +}) +``` + +该例子实现的功能是:调用原生端注入到`js`的的`getUpdateManager`方法,获取`LocalUpdateManagerInstance`实例,通过该实例调用了`onCheckForUpdate`方法,传递了一个参数`listener`,该参数为一个函数,里面包含了业务逻辑。 ### 扩展原生Api @58-孔校军 From 8283f5b2f4f3d46fc4dda87595c65f81d6040eb1 Mon Sep 17 00:00:00 2001 From: "guoenxuan (A)" Date: Sat, 13 Apr 2024 16:20:28 +0800 Subject: [PATCH 08/14] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=BC=96=E8=AF=91/Taro?= =?UTF-8?q?WebContainer=E4=BB=A5=E5=8F=8A=E5=90=8C=E5=B1=82=E6=B8=B2?= =?UTF-8?q?=E6=9F=93=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/harmony-hybrid/index.md | 331 ++++++++++++++++++++++++++++++++++- 1 file changed, 328 insertions(+), 3 deletions(-) diff --git a/docs/harmony-hybrid/index.md b/docs/harmony-hybrid/index.md index 28ee5f1a3fb6..6ee6dae20e5a 100644 --- a/docs/harmony-hybrid/index.md +++ b/docs/harmony-hybrid/index.md @@ -3,7 +3,7 @@ title: Harmony Hybrid --- :::info -Taro v3.6.8+ 开始支持 +Taro v3.6.24+ 开始支持 ::: ## 简介 @@ -22,14 +22,168 @@ Taro Harmony Hybrid容器是为让Taro小程序代码可以完整的运行在鸿 ### H5侧编译运行 @华为-漆灿 +Taro CLI 依赖于 Node.js 环境,所以在你的机器上需要安装 Node.js 环境。请确保已具备较新的 node 环境(>=16.20.0)。当你的机器已经存在了 Node.js 环境,可以通过在终端输入命令 npm i -g `@tarojs/cli` 安装 Taro CLI。安装完毕之后,在终端输入命令 taro,如果出现类似内容就说明安装成功了: + +```shell +👽 Taro v3.6.25 +Usage: taro [options] +Options: + -V, --version output the version number + -h, --help output usage information +``` + +安装好 Taro CLI 之后可以通过 taro init 命令创建一个全新的项目,你可以根据你的项目需求填写各个选项,一个最小版本的 Taro 项目会包括以下文件: + +``` +├── babel.config.js # Babel 配置 +├── .eslintrc.js # ESLint 配置 +├── config # 编译配置目录 +│ ├── dev.js # 开发模式配置 +│ ├── index.js # 默认配置 +│ └── prod.js # 生产模式配置 +├── package.json # Node.js manifest +├── dist # 打包目录 +├── project.config.json # 小程序项目配置 +├── src # 源码目录 +│ ├── app.config.js # 全局配置 +│ ├── app.css # 全局 CSS +│ ├── app.js # 入口组件 +│ ├── index.html # H5 入口 HTML +│ └── pages # 页面组件 +│ └── index +│ ├── index.config.js # 页面配置 +│ ├── index.css # 页面 CSS +│ └── index.jsx # 页面组件,如果是 Vue 项目,此文件为 index.vue +``` + +通过 Taro CLI 工具基于`默认模板`创建 Taro 工程,使用如下编译命令生成 harmony-hybrid 平台的 Web 资源: + +```shell +# yarn +$ yarn build:harmony-hybrid +# npm script +$ npm run build:harmony-hybrid +# pnpm script +$ pnpm build:harmony-hybrid +``` + +生成的产物在 `dist` 目录下 + ### 壳工程编译运行 @华为-漆灿 +Taro `harmony-hybrid` 平台产物需要结合鸿蒙壳工程一起编译运行才能实现完整的功能。`@hybrid/web-container` 三方库模块提供了鸿蒙 `TaroWebContainer` 等组件和 API,支持开发者快速构建运行环境。鸿蒙壳工程使用 `@hybrid/web-container` 模块的方式如下: + +- 使用DevEco Studio开发工具( >= 5.0.3.100 )新建应用工程,选择Empty Ability模板,API >= 11, 其他配置使用默认值。 +- 在 `entry/oh-package.json5` 文件中添加 `@hybrid/web-container` 模块的依赖并点击Sync进行同步: +```json +{ + "license": "ISC", + "devDependencies": {}, + "name": "entry", + "description": "演示如何使用TaroWebContainer组件", + "version": "1.0.0", + "dependencies": { + "@hybrid/web-container": "2.0.0-rc.1" + } +} +``` +- 使用 `@hybrid/web-container` +```typescript +import { TaroWebContainer } from '@hybrid/web-container'; +``` +具体使用方式请参考下个章节:集成到现有鸿蒙工程 + +- 最后点击菜单 `Build` -- `Rebuild Project` 编译项目。 + ## 集成到现有鸿蒙工程 ### 简单集成(TaroWebContainer) @华为-漆灿 +`TaroWebContainer` 组件提供加载单页面 Web 应用能力,并提供部分 Taro API 鸿蒙版本。 + +**使用方法:** +```typescript +// entry/src/main/ets/pages/Index.ets +import Want from '@ohos.app.ability.Want'; +import Url from '@ohos.url'; +import { TaroWebContainer, InjectObject, HostPageState, TaroWebController, Logger, LoggerLevel, wbLogger } from '@hybrid/web-container'; +const SAMPLE_INDEX_TAG = 'SampleIndex'; +@Component +struct TaroMpharmonySample { + @State pageState: HostPageState = HostPageState.PageInit; + @State taroWebController: TaroWebController = new TaroWebController(); + // 用户可以自定义对象注入到Web环境中,使用native.sayHello格式进行调用 + nativeObj: InjectObject = { + sayHello: () => console.log('Hello World'), + } + onBackPress() { + if (this.taroWebController.accessBackward()) { + this.taroWebController.backward(); + return true; + } + return false; + } + aboutToAppear() { + Logger.setLogLevel(LoggerLevel.LOG_DEBUG); + } + onPageShow() { + this.pageState = HostPageState.PageOnShow; + } + onPageHide() { + this.pageState = HostPageState.PageOnHide; + } + webUrl(): string { + // 开发阶段可以把网站静态资源文件放置到src/main/resources/rawfile/目录下 + // 生产环境下可以把部分网页静态资源放置到web服务器, 这里填写实际的网站地址url + return 'resource://rawfile/index.html'; + } + webUrlPrefix() { + try { + const url = Url.URL.parseURL(this.webUrl()); + return `${url.protocol}//${url.host}/`; + } catch (err) { + wbLogger.error(SAMPLE_INDEX_TAG, `Invalid webUrl: ${this.webUrl()}`); + return ''; + } + } + build() { + Column() { + TaroWebContainer({ + pageState: this.pageState, // 页面状态同步到组件 + webUrl: this.webUrl(), // 初始Url + webUrlPrefix: this.webUrlPrefix(), + useCache: true, + taroWebController: this.taroWebController, + isFullScreen: true, // 是否全屏显示 + injectObj: this.nativeObj, // 注入对象 + }) + .width('100%') + .height('100%') + } + } +} +``` + +**构造参数说明:** + +| 参数名称 | 类型 | 描述 | 必填 | +|-------------------|-------------------|-------------------------------------------------------|-----------------------| +| taroWebController | TaroWebController | TaroWebContainer组件的控制器 | 是 | +| webUrl | string | 资源入口url | 是 | +| webUrlPrefix | string | 资源入口url的前缀,一般是 `${webUrl.protocol}://${webUrl.host}/` | 是 | +| pageState | HostPageState | 传递页面状态 | 是 | +| useCache | boolean | 是否优先使用应用内置的Web资源 | 否,默认值: true | +| want | Want | 传递EntryAbility中`onCreate`和`onNewWant`保存的want信息 | 否,默认值: { } | +| isFullScreen | boolean | 是否全屏显示应用 | 否,默认值: true | +| injectObj | ESObject | 注入ets对象到Web环境 | 否:默认值:undefined | +| showCapsule | boolean | 是否显示胶囊按钮 | 否:默认值:true | +| capsulePage | string | 点击胶囊按钮跳转的页面 | 否:默认值:`pages/Capsule` | +| enableWebDebug | boolean | [开启Web调试功能][Web调试devtools配置] | 否:默认值:true | +| navigationInitVisible | boolean | 控制导航栏初始显示状态 | 否:默认值:true | + + ### 多容器和容器共用集成(TaroHybrid) @58-刘阳 Done @@ -308,6 +462,178 @@ nativeUpdater.update(new NativeApiPair("youMethodName1",["param1",123],"myField" ### 同层渲染 @华为-漆灿 +`@hybrid/web-container` 提供 `sameLayerManager.registerNativeComponentBuilders` 方法来注册同层渲染组件。 + +**参数说明:** + +| 参数名称 | 类型 | 描述 | 必填 | +|---------------|----------------------------------------------------|----------------------|---------------------| +| componentName | string | 对应embed标签type属性,去掉 `native/` 前缀 | 是 | +| builder | (...args: ESObject[]) => void | 使用 `@Builder` 注解的原生组件builder函数 | 是 | + + +**使用方法:** +- 壳工程中,注册自定义组件: + +```typescript +import { sameLayerManager } from '@hybrid/web-container' + +export default class EntryAbility extends UIAbility { + onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) { + sameLayerManager.registerNativeComponentBuilders('hos-video', NativeVideoBuilder) + } + // ... +} + +``` +- Video 自定义组件实现参考 + +```typescript +import { sameLayerManager } from '@hybrid/web-container'; + +@Observed +export class VideoParams { + width: number // 组件宽度 + height: number // 组件高度 + componentId: string // 组件ID + src: string // 要播放视频的资源地址 + controls?: boolean // 是否显示播放控件 + muted?: boolean // 是否静音 + loop?: boolean + autoPlay?: boolean + onPlay?: (res?: string) => void + onPause?: (res?: string) => void + + constructor() { + this.width = 0; + this.height = 0; + this.componentId = ''; + this.src = ''; + } +} + +@Component +export struct NativeVideo { + @ObjectLink params: VideoParams + videoController: VideoController = new VideoController(); + + build() { + Column() { + Video({ + src: this.params.src, + controller: this.videoController + }) + .objectFit(ImageFit.Fill) + .autoPlay(this.params.autoPlay ?? true) + .muted(this.params.muted ?? false) + .loop(this.params.loop ?? false) + .controls(this.params.controls ?? true) + .onClick((event) => { + console.log('NativeEmbed video onClick.') + }) + .onStart(() => { + console.log('NativeEmbed video onPlay.', this.params.height) + const callJsOnPlay: Function | undefined = (sameLayerManager.getSameLayerArgs(this.params.componentId) as VideoParams)?.onPlay + callJsOnPlay && callJsOnPlay('Native Video playing.') + }) + .onPause(() => { + console.log('NativeEmbed video onPause.') + const callJsOnPause: Function | undefined = (sameLayerManager.getSameLayerArgs(this.params.componentId) as VideoParams)?.onPause + callJsOnPause && callJsOnPause('Native Video paused.') + }) + } + .width(this.params.width) + .height(this.params.height) + } +} + +@Builder +export function NativeVideoBuilder(params: VideoParams) { + NativeVideo({ params: params }) + .backgroundColor(Color.Green) +} + +``` + +- 前端代码中,使用 `react` 框架实现的代码如下: +```typescript +import React from 'react' +import classNames from 'classnames' + +import './index.scss' + +let videoId = 0 + +interface IProps extends React.HTMLAttributes { + src: string + controls?: boolean + autoplay?: boolean + loop?: boolean + muted?: boolean + onPlay?: (res: any) => void + onPause?: (res: any) => void +} + +export default class HosVideo extends React.Component { + private componentId: string + + constructor (props: IProps | Readonly) { + super(props) + this.componentId = `video_${videoId++}` + } + + componentDidMount () { + this.transferVideoProps() + } + + componentDidUpdate (_prevProps: IProps, _prevState: any) { + // 组件更新时重新传输数据 + this.transferVideoProps() + } + + transferVideoProps () { + // 同层渲染video组件数据 + const { + src, + controls, + autoplay, + loop, + muted, + onPlay, + onPause + } = this.props + + const properties = { + componentId: this.componentId, + src: src, + controls: controls, + autoPlay: autoplay, + loop: loop, + muted: muted, + onPlay: onPlay, + onPause: onPause + } + + // @ts-ignore 调用JSB方法传递原生组件数据 + window.JSBridge && window.JSBridge.transferSameLayerArgs(properties) + } + + render () { + const { + style, + className + } = this.props + + return ( +

+ +
+ ) + } +} +``` + + ## FAQ ### 原生导航条影响Fixed布局 @@ -325,5 +651,4 @@ window.navigationHeight 当存在原生导航栏时,fixed布局需要添加一个top值,其值为window.navigationHeight - - +[Web调试devtools配置]: https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/web/web-debugging-with-devtools.md \ No newline at end of file From 648a00aa367fadf8db888bb4edead1aa5f30e2bc Mon Sep 17 00:00:00 2001 From: kongxiaojun Date: Mon, 15 Apr 2024 15:07:46 +0800 Subject: [PATCH 09/14] =?UTF-8?q?=E6=89=A9=E5=B1=95=E5=8E=9F=E7=94=9FApi?= =?UTF-8?q?=E9=83=A8=E5=88=86=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/harmony-hybrid/index.md | 89 +++++++++++++++++++++++++++++++++++- 1 file changed, 88 insertions(+), 1 deletion(-) diff --git a/docs/harmony-hybrid/index.md b/docs/harmony-hybrid/index.md index 6ee6dae20e5a..6bba8aafc3c2 100644 --- a/docs/harmony-hybrid/index.md +++ b/docs/harmony-hybrid/index.md @@ -305,7 +305,94 @@ static onBack(taroWebController: TaroWebController): boolean { @58-张志新 ### 扩展原生Api -@58-孔校军 + +当Taro API不满足业务需求时,可以扩展原生API,实现小程序端调用原生功能。先由原生部分实现JSBridge方法,再由小程序部分注册该方法并调用。 + +#### 原生部分 + +##### 定义InjectObject + +示例代码如下: + +```typescript + +interface LoginOptions { + username: string + password: string + success: (t: string | null | undefined) => void + error: (error: BusinessError) => void +} + +export const nativeObj:InjectObject = { + customLogin:(options: LoginOptions) => { + // 登录... + options.success("xxx") + } +} +``` + +##### 初始化注入InjectObject + +```typescript +TaroHybridManager.init({ + uiAbilityContex: this.context, + domain: 'https://xxx.xxx.com', // 注意:此处不添加/结尾 + injectNativeMethod: (uiAbilityContext: common.UIAbilityContext) => { + return nativeObj + } + }) +``` + +##### 注意事项 + +1. 扩展的方法中只能定义一个参数,上面的例子中我们定义LoginOptions接口来封装全部参数。 +2. 扩展的方法参数中只要最上层可以包含方法,嵌套的对象中不能包含方法,上面的例子中LoginOptions中包含了success和error方法,如果把success和error方法放到一个单独的Callback interface中就不可行了。 + +#### 小程序部分 + +##### 方法声明 + +通过@window.MethodChannel.jsBridgeMode装饰器声明方法,具体代码如下: + +```typescript +// @proxyClassSign('') +class NativeApi { + + // @ts-ignore + @window.MethodChannel.jsBridgeMode({ isAsync: true, autoRelease: true }) + customLogin (option: any) { + return option//这里固定返回option即可 + } +} + +const native = new NativeApi() + +export default native +``` + +参数说明: + +isAsync:如果参数option中定义了回调方法则为true,否则为false +autoRelease:如果option中有回调方法且回调方法可能会调用多次则设置为false,否则就为true + +##### 方法调用 + +```typescript + +import { native } from './NativeApi'; + +native.customLogin({ + username: 'xxx', + password: 'xxx', + success: () => { + console.log('Login success!') + }, + error: (e) => { + console.error('Login error.', e) + } +}) + +``` ### 鸿蒙一多适配指导 From b60710ad59a662b1320961c3485c65e6d6cd09ae Mon Sep 17 00:00:00 2001 From: Jacy Date: Mon, 15 Apr 2024 15:56:21 +0800 Subject: [PATCH 10/14] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=89=A9=E5=B1=95?= =?UTF-8?q?=E5=8E=9F=E7=94=9FAPI=E9=83=A8=E5=88=86=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/harmony-hybrid/index.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/harmony-hybrid/index.md b/docs/harmony-hybrid/index.md index 1dd7e00d36e3..514b1e0c67a4 100644 --- a/docs/harmony-hybrid/index.md +++ b/docs/harmony-hybrid/index.md @@ -606,6 +606,7 @@ export default native 参数说明: isAsync:如果参数option中定义了回调方法则为true,否则为false + autoRelease:如果option中有回调方法且回调方法可能会调用多次则设置为false,否则就为true ##### 方法调用 @@ -971,4 +972,4 @@ window.navigationHeight 当存在原生导航栏时,fixed布局需要添加一个top值,其值为window.navigationHeight -[Web调试devtools配置]: https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/web/web-debugging-with-devtools.md \ No newline at end of file +[Web调试devtools配置]: https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/web/web-debugging-with-devtools.md From c43d1bcd78b3550646f5efdea5bfbaf162bec897 Mon Sep 17 00:00:00 2001 From: zhangzhixin Date: Mon, 15 Apr 2024 21:07:46 +0800 Subject: [PATCH 11/14] =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8F=E5=86=85?= =?UTF-8?q?=E7=BD=AE=E5=8F=8A=E7=83=AD=E6=9B=B4=E6=96=B0=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/harmony-hybrid/index.md | 50 +++++++++++++++++++++++++++++++++--- 1 file changed, 47 insertions(+), 3 deletions(-) diff --git a/docs/harmony-hybrid/index.md b/docs/harmony-hybrid/index.md index 514b1e0c67a4..3c1aed77f96e 100644 --- a/docs/harmony-hybrid/index.md +++ b/docs/harmony-hybrid/index.md @@ -301,9 +301,53 @@ static onBack(taroWebController: TaroWebController): boolean { } ``` -### 小程序内置及热更新 (待完善) - 待完善 -#### 方案简介 +### 小程序内置及热更新 +#### 内置及热更新的使用方式 +##### 小程序内置规则 +在业务较为复杂的场景时,项目通常分为多个`bundle`,内置到应用时遵循以下目录结构规则: +``` +├──rawfile # 应用rawfile目录 +│ └──spa # 多bundle内置目录,支持配置 +│ ├──spa_main@100000 # 小程序1的bundle +│ │ └──spa # 一级目录 +│ │ └──main # 二级目录 +│ │ ├──js # js目录 +│ │ ├──css # css目录 +│ │ ├──static # 静态资源目录 +│ │ └──index.html # 首页文件 +│ ├──spa_new@100000 # 小程序2的bundle +│ │ └──spa # 一级目录 +│ │ └──new # 二级目录 +│ │ ├──js # js目录 +│ │ ├──css # css目录 +│ │ ├──static # 静态资源目录 +│ │ └──index.html # 首页文件 +``` +以上目录结构的解释说明 +1. rawfile目录下的spa,为多bundle的内置目录,容器会在此目录下读取bundle加载,支持以下方式配置(该目录要与配置一致): +```typescript +GlobalThis.getInstance().setRawFile('spa') +``` +2. bundle包名称:`一级目录`+`_`+`二级目录`+`@`+`VersionCode`,例如:spa_main@100000,以`@`符分割为两部分: +2.1 `@`符分前置: 为bundle的打包目录层级,一般为index.html(首页文件)的path路径,用下划线`_`分割,作用是为内置文件路径拦截匹配查找; +2.2 VersionCode: 为当前bundle版本号,作用为版本控制及磁盘热更新 +##### 小程序磁盘缓存 +1. 读取磁盘缓存,磁盘更新操作入口(如下),读取应用磁盘`${context.filesDir}/update`下bundle缓存版本信息: +```typescript +LocalUpdateManager.updateMiniOnLaunch() +``` +2. 内置更新缓存至磁盘,若磁盘缓存bundle版本 < rawfile内置版本,则将内置bundle更新至磁盘,具体实现参见以下方法: +``` +LocalUpdateManager.updateAllMini() +``` +3. 更新至磁盘的bundle在容器加载时会被自动查找加载; +4. 磁盘缓存默认开启,支持以下方式关闭: +```typescript +GlobalThis.getInstance().setDiskUpdateEnable(false) +``` +##### 热更新 +开发中。。。 +#### 整体方案简介 动态下开发台吗,在不发布新版本的情况下修复`bug`和发布新功能,绕开应用商店的审核机制,避免长时间审核以及多次被拒绝造成的成本问题,缩短用户取得新版本的流程,改善用户体验。 From 0e226f3b28f9ff24d2bc2ce7790e60db45207605 Mon Sep 17 00:00:00 2001 From: ZXDSAX <2998227853@qq.com> Date: Tue, 16 Apr 2024 15:34:41 +0800 Subject: [PATCH 12/14] =?UTF-8?q?fix:=20request=E6=8E=A5=E5=8F=A3=E5=8E=9F?= =?UTF-8?q?=E7=94=9Fjs=E5=AE=9E=E7=8E=B0=E8=BD=AC=E6=8D=A2=E6=96=87?= =?UTF-8?q?=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/harmony-hybrid/index.md | 204 ++++++++++++++++++++++++++++++++++- 1 file changed, 203 insertions(+), 1 deletion(-) diff --git a/docs/harmony-hybrid/index.md b/docs/harmony-hybrid/index.md index 3c1aed77f96e..3bac239fa591 100644 --- a/docs/harmony-hybrid/index.md +++ b/docs/harmony-hybrid/index.md @@ -822,7 +822,209 @@ nativeUpdater.update(new NativeApiPair("youMethodName1",["param1",123],"myField" ### Taro.request请求方式选择(原生/js) -@华为-漆灿 + +#### 一、Taro.request 原生实现(native桥接)代码位置:taro/packages/taro-platform-harmony-hybrid/src/api/apis/network/request/index.ts + +```typescript + +let task!: Taro.RequestTask + const result: ReturnType = new Promise((resolve, reject) => { + const upperMethod = method ? method.toUpperCase() : method + const taskID = native.request({ + url, + method: upperMethod, + ...otherOptions, + success: (res: any) => { + isFunction(success) && success(res) + isFunction(complete) && complete(res) + resolve(res) + }, + fail: (res: any) => { + isFunction(fail) && fail(res) + isFunction(complete) && complete(res) + reject(res) + }, + }) + task = judgeUseAxios ? taskID : NativeRequest.getRequestTask(taskID) + }) as any +``` + +#### 二、Taro.request js实现(axios)代码位置:taro/packages/taro-platform-harmony-hybrid/src/api/apis/request.ts + +```typescript + +this.httpRequest = axios.create({ + responseType: responseType || 'text', + headers: headers, + timeout: timeout || 2000, + }) + + // 请求拦截器 + this.httpRequest.interceptors.request.use( + (config) => { + if (config.enableCache === false) { + return config + } + // 处理缓存 + const cacheData = localStorage.getItem(config.url) + if (cacheData !== null) { + let result = cacheData + if (dataType === 'json') { + result = JSON.parse(cacheData) + } + source.cancel('cache has useful data!!') + return Promise.resolve({ result }) + } + return config + }, + (error) => { + console.error('error: ', error) + } + ) + + // 响应拦截器 + this.httpRequest.interceptors.response.use( + (response) => { + // 缓存数据 + if (response.config.enableCache === false) { + localStorage.setItem(response.config.url, JSON.stringify(response.data)) + } + callbackManager.headersReceived.trigger({ + header: response.headers + }) + return response + }, + (error) => { + console.error('error: ', error) + } + ) + + if (!object) { + console.error('request error: params illegal') + return + } + + let isFormUrlEncoded = false + for (const key in headers) { + if (key.toLowerCase() === 'content-type') { + if (headers[key].toLowerCase().includes('application/x-www-form-urlencoded')) { + isFormUrlEncoded = true + } + break + } + } + + // data为Object类型时,属性的值类型如果是number, request请求时信息会丢失. 故将data转成string类型进行规避 + if (data && (isFormUrlEncoded || ['GET', 'OPTIONS', 'DELETE', 'TRACE', 'CONNECT'].includes(method))) { + const dataArray = [] + for (const key in data) { + // @ts-ignore + dataArray.push(encodeURIComponent(key) + '=' + encodeURIComponent(data[key])) + } + data = dataArray.join('&') + } + + // header的属性的值类型如果是number, request请求时信息会丢失. 故将各个属性转成string类型 + if (headers) { + for (const key in headers) { + headers[key] = `${headers[key]}` + } + } + + this.httpRequest({ + method: method, + url: url, + CancelToken: source.token, + enableCache: enableCache || false, + }) + .then((response) => { + if (success && !this.abortFlag) { + let result = response.result + if (response.config.responseType === 'text') { + if (dataType === 'text') { + result = response.data + } else if (dataType === 'json') { + result = JSON.parse(response.data) + } else if (dataType === 'base64') { + const encodeData = encodeURIComponent(response.data) + result = btoa(encodeData) + } else if (dataType === 'arraybuffer') { + result = new TextEncoder().encode(response.data).buffer + } else { + console.error('Unsupported dataType!!') + } + } else if (response.config.responseType === 'arraybuffer') { + result = response.data + } else { + console.error('Unsupported dataType!!: ', response.config.responseType) + } + const res = { + data: result, + statusCode: response.status, + header: response.headers, + cookies: response.cookies ? [response.cookies] : [], + errMsg: 'request:ok', + } + this.result = res + success(res) + } + }) + .catch((err) => { + console.error('request error: ' + JSON.stringify(err)) + if (fail && !this.abortFlag) { + // eslint-disable-next-line no-console + const res = { errMsg: errMsgMap.has(err.code) ? errMsgMap.get(err.code) : `${JSON.stringify(err)}` } + this.result = res + fail(res) + } + }) + .finally(() => { + if (complete && !this.abortFlag) { + complete(this.result) + } + if (this.httpRequest) { + source.cancel('requestTask cancelled by the user!') + } + }) +``` + +#### 三、原生、js方式转换实现(proxy代理)代码位置:taro/packages/taro-platform-harmony-hybrid/src/api/apis/NativeApi.ts + +```typescript + +class HybridProxy { + private readonly useAxios: boolean + private readonly useOsChannel: boolean + private readonly cacheProxy: any + private readonly requestApi = 'request' + + constructor (useAxios: boolean, useOsChannel: boolean, nativeApi: NativeApi) { + this.useAxios = useAxios + this.useOsChannel = useOsChannel + this.cacheProxy = new Proxy(nativeApi, new CacheStorageProxy(nativeApi)) + } + + get (_target: any, prop: string) { + return (...args: any) => { + if (this.useAxios && prop === this.requestApi) { + judgeUseAxios = this.useAxios + // @ts-ignore + return new RequestTask(...args) + } + if (this.useOsChannel && osChannelApi.hasOwnProperty(prop)) { + return osChannelApi[prop](...args) + } + return this.cacheProxy[prop](...args) + } + } +} + +const nativeApi = new NativeApi() +const native = new Proxy(nativeApi, new HybridProxy(false, false, nativeApi)) // 第一个false是默认走jsb,true是走纯js, 第二个false是不走osChannel +export default native +``` +#### 注意 +1、转换需要手动修改 const native = new Proxy(nativeApi, new HybridProxy(false, false, nativeApi)) 中 new HybridProxy的第一个参数,改为false为原生实现,若改为true,则为js实现。 ### 同层渲染 预计后续530支持 From 65683fa38fcdb71461c916eff25f346b1216b84c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E9=98=B3?= Date: Tue, 16 Apr 2024 19:45:07 +0800 Subject: [PATCH 13/14] =?UTF-8?q?=E5=8E=BB=E6=8E=89=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E5=88=86=E9=85=8D=E6=A0=87=E8=AF=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/harmony-hybrid/index.md | 8 -------- 1 file changed, 8 deletions(-) diff --git a/docs/harmony-hybrid/index.md b/docs/harmony-hybrid/index.md index 3c1aed77f96e..fe05a27c6a17 100644 --- a/docs/harmony-hybrid/index.md +++ b/docs/harmony-hybrid/index.md @@ -7,8 +7,6 @@ Taro v3.6.24+ 开始支持 ::: ## 简介 -@华为-漆灿 -@58-刘阳 Done Taro Harmony Hybrid容器是为让Taro小程序代码可以完整的运行在鸿蒙单内核系统里,在Taro H5平台的基础上,基于原生壳工程的jsbridge能力,扩展H5平台不支持的小程序Api能力,让Taro小程序0成本运行在鸿蒙系统。 @@ -20,7 +18,6 @@ Taro Harmony Hybrid容器是为让Taro小程序代码可以完整的运行在鸿 ## 快速编译运行 ### H5侧编译运行 -@华为-漆灿 Taro CLI 依赖于 Node.js 环境,所以在你的机器上需要安装 Node.js 环境。请确保已具备较新的 node 环境(>=16.20.0)。当你的机器已经存在了 Node.js 环境,可以通过在终端输入命令 npm i -g `@tarojs/cli` 安装 Taro CLI。安装完毕之后,在终端输入命令 taro,如果出现类似内容就说明安装成功了: @@ -185,7 +182,6 @@ struct TaroMpharmonySample { ### 多容器和容器共用集成(TaroHybrid) -@58-刘阳 Done **使用方法:** ```typescript @@ -269,7 +265,6 @@ struct TaroHybridPage { ## 进阶教程 ### 混合路由 -@58-刘阳 Done 在原生与TaroHybrid混合鸿蒙应用中,如果使用了容器共用,用户的路由栈会比较复杂,当在Taro Hybrid页面时,用户使用原生的物理返回时,需要区分是Web容器的返回,还是原生的返回。 @@ -675,7 +670,6 @@ native.customLogin({ ### 鸿蒙一多适配指导 #### 鸿蒙折叠屏适配指导 -@58-刘阳 Done 默认情况下,设计尺寸是750px,Taro适配不同手机分辨率的方式是等比缩放,在鸿蒙折叠屏展开的状态下,等比放大的效果不满足华为应用商店上架要求。 @@ -711,7 +705,6 @@ export default defineConfig(async (merge, { command, mode }) => { ### 沉浸式适配指导 -@58-刘阳 Done [鸿蒙官方适配指南](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-develop-apply-immersive-effects-0000001820435461-V5#section231547103814)提供了两个种方案:窗口全屏布局方案 及 组件安全区方案 @@ -1002,7 +995,6 @@ export default class HosVideo extends React.Component { ## FAQ ### 原生导航条影响Fixed布局 -@58-刘阳:Done **原因:** Web容器与原生导航栏之间是层叠布局,为了不影响H5页面的内容展示,Taro Harmony给每个Page设置了一个padding-top值,其值来自原生注入的一个变量 From 111088ac3b1791f7fd42b34618dd1970deb7ae61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E9=98=B3?= Date: Thu, 18 Apr 2024 19:14:39 +0800 Subject: [PATCH 14/14] =?UTF-8?q?harmony-hybrid=E6=96=87=E6=A1=A3=E5=90=8C?= =?UTF-8?q?=E6=AD=A5=E6=9B=B4=E6=96=B0=E5=88=B0version-3.x?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../version-3.x/harmony-hybrid/index.md | 1213 +++++++++++++++++ versioned_sidebars/version-3.x-sidebars.json | 3 +- 2 files changed, 1215 insertions(+), 1 deletion(-) create mode 100644 versioned_docs/version-3.x/harmony-hybrid/index.md diff --git a/versioned_docs/version-3.x/harmony-hybrid/index.md b/versioned_docs/version-3.x/harmony-hybrid/index.md new file mode 100644 index 000000000000..0e37ea695bd2 --- /dev/null +++ b/versioned_docs/version-3.x/harmony-hybrid/index.md @@ -0,0 +1,1213 @@ +--- +title: Harmony Hybrid +--- + +:::info +Taro v3.6.24+ 开始支持 +::: + +## 简介 + +Taro Harmony Hybrid容器是为让Taro小程序代码可以完整的运行在鸿蒙单内核系统里,在Taro H5平台的基础上,基于原生壳工程的jsbridge能力,扩展H5平台不支持的小程序Api能力,让Taro小程序0成本运行在鸿蒙系统。 + +此方案不同于Taro的Harmony原生方案,其运行时还是Webview,重点解决Api切换的问题。 + +![taroharmonyhybrid](@site/static/img/taroharmonyhybrid.jpg) + + +## 快速编译运行 + +### H5侧编译运行 + +Taro CLI 依赖于 Node.js 环境,所以在你的机器上需要安装 Node.js 环境。请确保已具备较新的 node 环境(>=16.20.0)。当你的机器已经存在了 Node.js 环境,可以通过在终端输入命令 npm i -g `@tarojs/cli` 安装 Taro CLI。安装完毕之后,在终端输入命令 taro,如果出现类似内容就说明安装成功了: + +```shell +👽 Taro v3.6.25 +Usage: taro [options] +Options: + -V, --version output the version number + -h, --help output usage information +``` + +安装好 Taro CLI 之后可以通过 taro init 命令创建一个全新的项目,你可以根据你的项目需求填写各个选项,一个最小版本的 Taro 项目会包括以下文件: + +``` +├── babel.config.js # Babel 配置 +├── .eslintrc.js # ESLint 配置 +├── config # 编译配置目录 +│ ├── dev.js # 开发模式配置 +│ ├── index.js # 默认配置 +│ └── prod.js # 生产模式配置 +├── package.json # Node.js manifest +├── dist # 打包目录 +├── project.config.json # 小程序项目配置 +├── src # 源码目录 +│ ├── app.config.js # 全局配置 +│ ├── app.css # 全局 CSS +│ ├── app.js # 入口组件 +│ ├── index.html # H5 入口 HTML +│ └── pages # 页面组件 +│ └── index +│ ├── index.config.js # 页面配置 +│ ├── index.css # 页面 CSS +│ └── index.jsx # 页面组件,如果是 Vue 项目,此文件为 index.vue +``` + +通过 Taro CLI 工具基于`默认模板`创建 Taro 工程,使用如下编译命令生成 harmony-hybrid 平台的 Web 资源: + +```shell +# yarn +$ yarn build:harmony-hybrid +# npm script +$ npm run build:harmony-hybrid +# pnpm script +$ pnpm build:harmony-hybrid +``` + +生成的产物在 `dist` 目录下 + +### 壳工程编译运行 +@华为-漆灿 + +Taro `harmony-hybrid` 平台产物需要结合鸿蒙壳工程一起编译运行才能实现完整的功能。`@hybrid/web-container` 三方库模块提供了鸿蒙 `TaroWebContainer` 等组件和 API,支持开发者快速构建运行环境。鸿蒙壳工程使用 `@hybrid/web-container` 模块的方式如下: + +- 使用DevEco Studio开发工具( >= 5.0.3.100 )新建应用工程,选择Empty Ability模板,API >= 11, 其他配置使用默认值。 +- 在 `entry/oh-package.json5` 文件中添加 `@hybrid/web-container` 模块的依赖并点击Sync进行同步: +```json +{ + "license": "ISC", + "devDependencies": {}, + "name": "entry", + "description": "演示如何使用TaroWebContainer组件", + "version": "1.0.0", + "dependencies": { + "@hybrid/web-container": "2.0.0-rc.1" + } +} +``` +- 使用 `@hybrid/web-container` +```typescript +import { TaroWebContainer } from '@hybrid/web-container'; +``` +具体使用方式请参考下个章节:集成到现有鸿蒙工程 + +- 最后点击菜单 `Build` -- `Rebuild Project` 编译项目。 + +## 集成到现有鸿蒙工程 + +### 简单集成(TaroWebContainer) +@华为-漆灿 + +`TaroWebContainer` 组件提供加载单页面 Web 应用能力,并提供部分 Taro API 鸿蒙版本。 + +**使用方法:** +```typescript +// entry/src/main/ets/pages/Index.ets +import Want from '@ohos.app.ability.Want'; +import Url from '@ohos.url'; +import { TaroWebContainer, InjectObject, HostPageState, TaroWebController, Logger, LoggerLevel, wbLogger } from '@hybrid/web-container'; +const SAMPLE_INDEX_TAG = 'SampleIndex'; +@Component +struct TaroMpharmonySample { + @State pageState: HostPageState = HostPageState.PageInit; + @State taroWebController: TaroWebController = new TaroWebController(); + // 用户可以自定义对象注入到Web环境中,使用native.sayHello格式进行调用 + nativeObj: InjectObject = { + sayHello: () => console.log('Hello World'), + } + onBackPress() { + if (this.taroWebController.accessBackward()) { + this.taroWebController.backward(); + return true; + } + return false; + } + aboutToAppear() { + Logger.setLogLevel(LoggerLevel.LOG_DEBUG); + } + onPageShow() { + this.pageState = HostPageState.PageOnShow; + } + onPageHide() { + this.pageState = HostPageState.PageOnHide; + } + webUrl(): string { + // 开发阶段可以把网站静态资源文件放置到src/main/resources/rawfile/目录下 + // 生产环境下可以把部分网页静态资源放置到web服务器, 这里填写实际的网站地址url + return 'resource://rawfile/index.html'; + } + webUrlPrefix() { + try { + const url = Url.URL.parseURL(this.webUrl()); + return `${url.protocol}//${url.host}/`; + } catch (err) { + wbLogger.error(SAMPLE_INDEX_TAG, `Invalid webUrl: ${this.webUrl()}`); + return ''; + } + } + build() { + Column() { + TaroWebContainer({ + pageState: this.pageState, // 页面状态同步到组件 + webUrl: this.webUrl(), // 初始Url + webUrlPrefix: this.webUrlPrefix(), + useCache: true, + taroWebController: this.taroWebController, + isFullScreen: true, // 是否全屏显示 + injectObj: this.nativeObj, // 注入对象 + }) + .width('100%') + .height('100%') + } + } +} +``` + +**构造参数说明:** + +| 参数名称 | 类型 | 描述 | 必填 | +|-------------------|-------------------|-------------------------------------------------------|-----------------------| +| taroWebController | TaroWebController | TaroWebContainer组件的控制器 | 是 | +| webUrl | string | 资源入口url | 是 | +| webUrlPrefix | string | 资源入口url的前缀,一般是 `${webUrl.protocol}://${webUrl.host}/` | 是 | +| pageState | HostPageState | 传递页面状态 | 是 | +| useCache | boolean | 是否优先使用应用内置的Web资源 | 否,默认值: true | +| want | Want | 传递EntryAbility中`onCreate`和`onNewWant`保存的want信息 | 否,默认值: { } | +| isFullScreen | boolean | 是否全屏显示应用 | 否,默认值: true | +| injectObj | ESObject | 注入ets对象到Web环境 | 否:默认值:undefined | +| showCapsule | boolean | 是否显示胶囊按钮 | 否:默认值:true | +| capsulePage | string | 点击胶囊按钮跳转的页面 | 否:默认值:`pages/Capsule` | +| enableWebDebug | boolean | [开启Web调试功能][Web调试devtools配置] | 否:默认值:true | +| navigationInitVisible | boolean | 控制导航栏初始显示状态 | 否:默认值:true | + + +### 多容器和容器共用集成(TaroHybrid) + +**使用方法:** +```typescript +// windowStage.loadContent里初始化 和 预加载 +windowStage.loadContent('xxx', storage, (err, data) => { + // 全局初始化 + TaroHybridManager.init({ + uiAbilityContex: this.context, + domain: 'https://customer.domain.com', // 小程序的域名,注意:此处不添加/结尾 + injectNativeMethod: (uiAbilityContext: common.UIAbilityContext) => { // 扩展原生API + ... + } + }) + // 预加载,可选,不是必须 + TaroHybridManager.preLoader( + windowStage.getMainWindowSync().getUIContext(), + "/xx/index.html", // html的path路由 + "/pages/index/index" // Taro小程序的Page路径 + ) +}) + +// 创建TaroHybrid页面(例子是基于Entry实现) +export interface TaroHybridRouterParams { + indexHtmlPath: string, + taroPath: string +} +export const RouterToTaroHybrid = (params: TaroHybridRouterParams) => { + // 跳转之前先加载url,目的是为了提升新页面的打开速度 + TaroHybridManager.loadUrl(params.indexHtmlPath, params.taroPath); + + setTimeout(()=>{ + router.pushUrl({ + url: 'xxx/TaroHybridPage', // 鸿蒙原生Page的路径,不是Taro小程序的Page + params: params + }, router.RouterMode.Standard) + }, 200) +} + +@Entry +@Component +struct TaroHybridPage { + @State pageState: HostPageState = HostPageState.PageInit; + private indexHtmlPath: string = (router.getParams() as TaroHybridRouterParams).indexHtmlPath + private taroPath: string = (router.getParams() as TaroHybridRouterParams).taroPath + + onPageShow(): void { + this.pageState = HostPageState.PageOnShow + } + onPageHide(): void { + this.pageState = HostPageState.PageOnHide + } + onBackPress(): boolean | void { + const instance = TaroHybridManager.getCoreInstance(this.indexHtmlPath) + if (!instance) { + return false; + } + return TaroHybridManager.onBack(instance.builderData.taroWebController) + } + + build() { + Stack({alignContent: Alignment.TopStart}){ + SafeArea(){ + TaroHybrid({ + indexHtmlPath: this.indexHtmlPath, + taroPath: this.taroPath, + pageState: this.pageState + }) + } + } + } +} + +``` + +**TaroHybrid的设计思路:** +1. 多容器的判断依据:html的Path路径为判断依赖,相同则共用,不同则新建载体页 +2. 容器共用的思路:通过鸿蒙的NodeContainer + NodeController实现 +3. 注意: + 1. 容器共用存在一个问题:相邻两个原生Page之间如何共用容器,页面切换动画时,会有一个页面白屏,进入和退出时都会出现,尽量避免相邻两个原生Page之间共用容器。 + +## 进阶教程 + +### 混合路由 + +在原生与TaroHybrid混合鸿蒙应用中,如果使用了容器共用,用户的路由栈会比较复杂,当在Taro Hybrid页面时,用户使用原生的物理返回时,需要区分是Web容器的返回,还是原生的返回。 + +TaroHybrid组件已经解决了此问题,其思路为: +1. 原生跳转打开的taro页面,添加query参数from=native +2. 原生的onBackPress逻辑里,获取当前url,判断有没有参数from=native,如果有则走原生路由返回,如果没有则走Web组件的backward逻辑 + +```typescript +static onBack(taroWebController: TaroWebController): boolean { + let curUrl = taroWebController.webController.getUrl(); + + if (curUrl?.endsWith('?from=native')) { //web回退到原生 + // Web先返回 + if (taroWebController.accessBackward()) { + setTimeout(()=>{ + taroWebController.backward(); + }, 200) + } + // 回退到原生 + return false; + } + if (taroWebController?.accessBackward()) { // web回退 + taroWebController?.backward(); + // 保留在当前Web页面 + return true; + } + // 回退到原生 + return false; + } +``` + +### 小程序内置及热更新 +#### 内置及热更新的使用方式 +##### 小程序内置规则 +在业务较为复杂的场景时,项目通常分为多个`bundle`,内置到应用时遵循以下目录结构规则: +``` +├──rawfile # 应用rawfile目录 +│ └──spa # 多bundle内置目录,支持配置 +│ ├──spa_main@100000 # 小程序1的bundle +│ │ └──spa # 一级目录 +│ │ └──main # 二级目录 +│ │ ├──js # js目录 +│ │ ├──css # css目录 +│ │ ├──static # 静态资源目录 +│ │ └──index.html # 首页文件 +│ ├──spa_new@100000 # 小程序2的bundle +│ │ └──spa # 一级目录 +│ │ └──new # 二级目录 +│ │ ├──js # js目录 +│ │ ├──css # css目录 +│ │ ├──static # 静态资源目录 +│ │ └──index.html # 首页文件 +``` +以上目录结构的解释说明 +1. rawfile目录下的spa,为多bundle的内置目录,容器会在此目录下读取bundle加载,支持以下方式配置(该目录要与配置一致): +```typescript +GlobalThis.getInstance().setRawFile('spa') +``` +2. bundle包名称:`一级目录`+`_`+`二级目录`+`@`+`VersionCode`,例如:spa_main@100000,以`@`符分割为两部分: +2.1 `@`符分前置: 为bundle的打包目录层级,一般为index.html(首页文件)的path路径,用下划线`_`分割,作用是为内置文件路径拦截匹配查找; +2.2 VersionCode: 为当前bundle版本号,作用为版本控制及磁盘热更新 +##### 小程序磁盘缓存 +1. 读取磁盘缓存,磁盘更新操作入口(如下),读取应用磁盘`${context.filesDir}/update`下bundle缓存版本信息: +```typescript +LocalUpdateManager.updateMiniOnLaunch() +``` +2. 内置更新缓存至磁盘,若磁盘缓存bundle版本 < rawfile内置版本,则将内置bundle更新至磁盘,具体实现参见以下方法: +``` +LocalUpdateManager.updateAllMini() +``` +3. 更新至磁盘的bundle在容器加载时会被自动查找加载; +4. 磁盘缓存默认开启,支持以下方式关闭: +```typescript +GlobalThis.getInstance().setDiskUpdateEnable(false) +``` +##### 热更新 +开发中。。。 +#### 整体方案简介 + +动态下开发台吗,在不发布新版本的情况下修复`bug`和发布新功能,绕开应用商店的审核机制,避免长时间审核以及多次被拒绝造成的成本问题,缩短用户取得新版本的流程,改善用户体验。 + +#### 具体实现 + +##### 1、资源拦截并加载本地资源 + +在业务较为复杂的场景时,项目通常分为多个`bundle`,热更新模块能够支持更新单独某个`bundle`服务。在`web`组件的`onInterceptRequest`中,可以进行资源拦截。通过`url`解析出`path`后,通过`path`获取对应的`bundle`信息,进而构建相应的响应返回给`web`组件。`MiniRawFileDataSource.getBizByPath`可以获取本地缓存中的`bundle`信息,`MiniLocalFileDataSource.fileExist`可以根据位置判断资源是否存在。 + +```ts +path = path.split('#')[0] +wbLogger.debug('TaroWeb', 'intercepter path=%{public}s', path) +let biz = MiniRawFileDataSource.getBizByPath(path) //获取业务标识 +const lastVerInfo = LocalUpdateManagerInstance.getLastVersionInfo(biz) +if (lastVerInfo?.diskCachePath) { // 走本地缓存 + if (!path || !MiniLocalFileDataSource.fileExist(lastVerInfo?.diskCachePath, path)) { + return null; + } + wbLogger.debug('TaroWeb', 'useLocalCacheResource path=%{public}s', path) + return MiniLocalFileDataSource.getFileOnResponseWeb(lastVerInfo?.diskCachePath, path) + } +``` + +##### 入口函数--`updateMiniOnLaunch` + +入口函数`updateMiniOnLaunch`接收一个`context`,首先初始化了基类`UpdateManager`,然后获取了`rawfile`目录下的文件内容,并传入到了`updateAllMini`中进行逻辑处理。 + +```ts +updateMiniOnLaunch(context: AppContext.UIAbilityContext) { + this.reset(context) + wbLogger.debug('LocalUpdateManager',`update start`); + this.updateAllMini(context,this.miniRepository.getMiniRawList(context)).then((result: Array) => { + if (result) { + wbLogger.debug('LocalUpdateManager',`update success ${result}`); + } + }).catch((error: Error) => { + wbLogger.error('LocalUpdateManager','update Error :', error); + }) +} +``` + + + +##### 1、获取`rawfile`文件信息--`getMiniRawList` + +从全局存储中拿出初始化时存储的`rawfile`文件名,根据该文件名称,获取该文件夹下所有的文件信息。 + +```ts +getRawMiniList(context: common.Context): Array{ + let rawFile = GlobalThis.getInstance().getRawFile(); + return context.resourceManager.getRawFileListSync(rawFile); +} +``` + +##### 2、更新所有的资源包信息---`updateAllMini` + +该函数接收一个`context`和`rawfile`文件信息,返回一个`Promise`对象。通过`rawfile`文件信息,构建`LocalVersionInfo`实例对象,该对象存储了对应文件的版本号、业务标识`biz`, 以及`rawfile`路径,将其存储到`UpdateConfig`单例的`Map`对象中,这样在资源拦截时可以从该`Map`中通过相应的业务标识获取到对应资源的信息。`rawfile`目录下的资源可能不是最新的,需要与本地缓存进行对比,如果本地缓存中没有任何资源,则需要将`rawfile`的资源复制到本地沙箱相应位置中,这样可以通过字节码优化,能提高性能。由于`rawfile`文件复制到了沙箱,这样沙箱资源一直都是最新的,所以需要更新存储在`UpdateConfig`单例的`Map`对象的资源信息。 + +```ts + async updateAllMini(context: AppContext.UIAbilityContext,miniList:Array) : Promise>{ + return new Promise((resolve, reject) => { + let miniArray = new Array() + try { + if (miniList) { + for (let index = 0; index < miniList.length; index++) { + const element = miniList[index]; + let splits = FileUtils.checkMiniFileNameFormat(element) + let miniInfo: LocalVersionInfo | null = null + if (splits) { + miniInfo = new LocalVersionInfo(splits[1], splits[0],'',this.miniRepository.getRawCachePath(element)) + UpdateConfig.getInstance().setOrReplaceMiniInfo(miniInfo.biz, miniInfo) + } + if (miniInfo) { + if (GlobalThis.getInstance().getDiskUpdateEnable()) { + this.updateDiskSingleMini(context, miniInfo) + } + wbLogger.debug('LocalUpdateManager',`VersionInfo miniInfo:${miniInfo.localVersion},biz:${miniInfo.biz},diskCachePath:${miniInfo.diskCachePath},rawCachePath:${miniInfo.rawCachePath}`); + miniArray.push(miniInfo) + } + } + //TODO-JasonZhang 热更新接口请求 + } + resolve(miniArray) + } catch (err) { + reject(err) + } + }) + } + updateDiskSingleMini(context: AppContext.UIAbilityContext,versionInfo:LocalVersionInfo){ + // 获取本地最新的版本号 + let localVersionInfo = this.miniRepository.readDiskLastMiniBizInfo(context,versionInfo.biz) + // 本地无内置版本,则迁移RawFile小程序资源到磁盘缓存目录为初始版本 + if (localVersionInfo && (localVersionInfo?.diskCachePath==''|| localVersionInfo?.localVersion < versionInfo.localVersion)) { + let result = this.miniRepository.copyMiniRawUnzipDisk(context,versionInfo) + if (result) { + versionInfo.localVersion = result.localVersion + versionInfo.diskCachePath = result.diskCachePath + } + wbLogger.debug('LocalUpdateManager',`copied success ${result}`); + }else{ + versionInfo.localVersion = localVersionInfo.localVersion + versionInfo.diskCachePath = localVersionInfo.diskCachePath + } + } +``` + +#### 使用说明 + +##### `arkts`端配置 + +热更新配置分为三步,首先需要配置`rawfile`内资源顶层文件夹名称,以壳工程资源为例`rawfile/spa/`,需要配置`spa`名称;其次,需要配置云端资源信息的`url`生成函数,这样当资源需要更新时可以从该地址获取相应信息;最后,启动热更新模块。 + +```tsx +onCreate(want: Want) { + // ... other code + GlobalThis.getInstance().setRawFile('spa') + UpdateConfig.getInstance(). + LocalUpdateManagerInstance.updateMiniOnLaunch(this.context) + } +``` + +###### 1、配置位置 + +热更新的启动位置,一般放在某个页面的`aboutToAppear`或者应用被打开时的`onCreate`中,热更新涉及有`http`请求,尽量减少热更新模块的执行。 + +###### 2、导入包 + +需要导入`LocalUpdateManagerInstance`实例,以及配置热更新模块的对象`UpdateConfig` + +``` tsx +import {LocalUpdateManagerInstance, UpdateConfig} from '@ohos/web-container' +``` + +###### 3、热更新初始配置 + +在执行入口函数前,需要对热更新模块进行配置初始化。`UpdateConfig`对象可以配置四个参数,**第一个参数和第二个参数为必须配置参数,第三个和第四个参数为选配**。其中第一个参数为最新离线资源配置的地址,需要用户按照字段配置好;第二个参数为初始的版本号(可以是`rawfile`路径下资源的版本),该版本号将会与第一个参数进行拼接,形成完成的`url`。原生端根据形成的`url`发起请求以获取服务端离线资源配置信息,服务端依据相关规则将字段返回,分两种情况,**需要更新离线资源和本地资源是最新的**。**后续的更新与该版本号无关,只与服务端最新离线资源配置相关。** + +```tsx +const updateConfig = new UpdateConfig('http://127.0.0.1:8080:/apis/config?local_version=', '0') +LocalUpdateManagerInstance.setUpdateConfig(updateConfig) +``` + +**1、需要更新离线资源** + +假设初始版本号为`0`,服务端的最新离线资源版本为`1`,则需要更新。服务端收到原生端的请求后,获取`local_version`字段进行对比,根据相关规则将字段传回原生端。服务端配置字段可以参照如下所示: + +```json +{"code": 200, "message": "request OK", "data": {"mini_download_url": "http://127.0.0.1/mpharmony/mpharmony.zip", "mini_version": 1}} +``` + +服务端需要配置上述四个字段,其中,`data`字段中的`mini_download_url`字段表示需要下载离线资源路径,热更新模块依据这个路径进行下载最新配置。 + +**注意:这里的`0`只是用例,后续的更新与该版本号无关,只与服务端最新离线资源配置相关。** + +**2、本地资源是最新的** + +假设初始版本号为`1`,服务端的最新离线资源版本为`1`,则不需要更新。服务端收到原生端的请求后,获取`local_version`字段进行对比,根据相关规则将字段传回原生端,服务端配置字段可以参照如下所示: + +```json +{"code": "300", "message": "latest version"} +``` + +**注意:这里的`1`只是用例,后续的更新与该版本号无关,只与服务端最新离线资源配置相关。** + +###### 4、排序算法配置(选配) + +此外,热更新模块会保留两个历史版本,会在下次启动时删除多余版本。此时需要对离线版本进行排序,默认支持的排序算法是`2.1.0 < 11.0.1`。用户可以自己实现排序算法用以适配不同的版本号,伪代码如下所示: + +```ts +/** + * + * @param v1 + * @param v2 + * @returns {boolean} is v1 bigger than v2 + */ + +function versionCompare(v1: string, v2: string) { + if (v1 > v2){ + return true + } + return false +} +``` + +热更新模块配置如下所示: + +```tsx +const updateConfig = new UpdateConfig('http://127.0.0.1:8080:/apis/config?local_version=', '0', true, versionCompare) +LocalUpdateManagerInstance.setUpdateConfig(updateConfig) +``` + +第三个参数为是否开启自定义排序算法配置,默认为`false`,`false`会执行默认的排序算法 + +4、启动,启动热更新模块入口函数时需要传递当前页面的上下文,下载的离线资源会依据上下文存储。 + +```tsx +LocalUpdateManagerInstance.updateMiniOnLaunch(this.context) +``` + +##### `js`端配置 + +**注意:因为该配置实现的方法需要在原生端被调用,所以需要这些方法要在热更新模块启动前进行配置,如果放在热更新启动后,可能无法生效** + +热更新模块提供了一个对象,注入到了`js`端,这样用户可以依据业务来决定是否需要更新。 + +注入到`js`端的方法如下所示: + +```tsx +applyUpdate(){} +onCheckForUpdate(listener: (hasUpdate: boolean)=>void){} +onUpdateReady(listener: (updatedPath: string)=>void){} +onUpdateFailed(listener: ()=>void){} +``` + +用户可以在`js`端通过预先注入的代理对象`native`调用这些方法,用以实现相应的业务,实现例子如下所示: + +```ts +const updateManager = Taro.getUpdateManager() +updateManager.onCheckForUpdate(function listener(hasUpdate: boolean){ + if (!hasUpdate){ + return + } + updateManager.onUpdateReady(function listener(updatedPath: string){ + updateManager.applyUpdate() + }) +}) +updateManager.onUpdateFailed(function listener(){ + console.log("UpdateFailed") +}) +``` + +该例子实现的功能是:调用原生端注入到`js`的的`getUpdateManager`方法,获取`LocalUpdateManagerInstance`实例,通过该实例调用了`onCheckForUpdate`方法,传递了一个参数`listener`,该参数为一个函数,里面包含了业务逻辑。 + +### 扩展原生Api + +当Taro API不满足业务需求时,可以扩展原生API,实现小程序端调用原生功能。先由原生部分实现JSBridge方法,再由小程序部分注册该方法并调用。 + +#### 原生部分 + +##### 定义InjectObject + +示例代码如下: + +```typescript + +interface LoginOptions { + username: string + password: string + success: (t: string | null | undefined) => void + error: (error: BusinessError) => void +} + +export const nativeObj:InjectObject = { + customLogin:(options: LoginOptions) => { + // 登录... + options.success("xxx") + } +} +``` + +##### 初始化注入InjectObject + +```typescript +TaroHybridManager.init({ + uiAbilityContex: this.context, + domain: 'https://xxx.xxx.com', // 注意:此处不添加/结尾 + injectNativeMethod: (uiAbilityContext: common.UIAbilityContext) => { + return nativeObj + } + }) +``` + +##### 注意事项 + +1. 扩展的方法中只能定义一个参数,上面的例子中我们定义LoginOptions接口来封装全部参数。 +2. 扩展的方法参数中只要最上层可以包含方法,嵌套的对象中不能包含方法,上面的例子中LoginOptions中包含了success和error方法,如果把success和error方法放到一个单独的Callback interface中就不可行了。 + +#### 小程序部分 + +##### 方法声明 + +通过@window.MethodChannel.jsBridgeMode装饰器声明方法,具体代码如下: + +```typescript +// @proxyClassSign('') +class NativeApi { + + // @ts-ignore + @window.MethodChannel.jsBridgeMode({ isAsync: true, autoRelease: true }) + customLogin (option: any) { + return option//这里固定返回option即可 + } +} + +const native = new NativeApi() + +export default native +``` + +参数说明: + +isAsync:如果参数option中定义了回调方法则为true,否则为false + +autoRelease:如果option中有回调方法且回调方法可能会调用多次则设置为false,否则就为true + +##### 方法调用 + +```typescript + +import { native } from './NativeApi'; + +native.customLogin({ + username: 'xxx', + password: 'xxx', + success: () => { + console.log('Login success!') + }, + error: (e) => { + console.error('Login error.', e) + } +}) + +``` + +### 鸿蒙一多适配指导 + +#### 鸿蒙折叠屏适配指导 + +默认情况下,设计尺寸是750px,Taro适配不同手机分辨率的方式是等比缩放,在鸿蒙折叠屏展开的状态下,等比放大的效果不满足华为应用商店上架要求。 + +**建议的适配方案:** +1. 最大放大比例不超过1.2倍 +2. 宽度不基于750px来布局,基于flex自适应 + +最大放大比例不超过1.1倍的配置: +```javascript +// 修改config/index.js +export default defineConfig(async (merge, { command, mode }) => { + const baseConfig = { + // .... + h5: { + // .... + postcss: { + pxtransform: { + enable: true, + config: { + baseFontSize: 20, + maxRootSize: 24, // 最大不超过1.2倍 + minRootSize: 10, // 最小不超过0.5倍 + } + }, + // .... + } + }, + // .... + } + // .... +}) +``` + + +### 沉浸式适配指导 + +[鸿蒙官方适配指南](https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-develop-apply-immersive-effects-0000001820435461-V5#section231547103814)提供了两个种方案:窗口全屏布局方案 及 组件安全区方案 + +建议使用“窗口全屏布局方案”,默认全屏模式,再处理状态栏及导航条的避让。 + +**全屏模式下的状态样的避让:** 通过原生创建一个SafeArea组件实现,而不通过JS实现 +```typescript +// 在UIAbility里,全局保存状态栏的安全高度 +const systemAvoidArea = windowClass.getWindowAvoidArea(window.AvoidAreaType.TYPE_SYSTEM); +const topRectHeight = systemAvoidArea.topRect.height +AppStorage.setOrCreate('topRectHeight', `${topRectHeight}px`); + +// 自定义SafeArea组件 +@Component +export struct SafeArea { + @StorageProp('topRectHeight') topRectHeight: string = '0px' + + @BuilderParam child: ()=>void + + build() { + Column() { + Row() + .width('100%') + .height(this.topRectHeight) + .backgroundColor(0xFFFFFF) + Column(){ + this.child() + } + .width('100%') + .layoutWeight(1) + } + .width('100%') + .height('100%') + } +} + +// Taro Hybrid的布局 +@Entry +@Component +struct TaroHybridPage { + build() { + Stack(){ + SafeArea(){ + TaroHybrid() + } + } + } +} +``` + +**全屏模式下的导航条的避让:** 通过鸿蒙Web组件支持安全边界,给H5的底部bar设置margin +```css +padding-bottom: env( safe-area-inset-bottom); +``` + +`注意:` 支持安全区域的鸿蒙单内核系统暂未发布 + + +### 访问控制权限二次弹窗指导 +@华为-漆灿 + +### 性能优化:同步调用走缓存 +taro的NativeApi,是taro暴露给鸿蒙实现的原生方法。使得Taro具备调用原生的能力。 + +对于NativeApi中的同步方法,每次调用都要执行原生代码逻辑,频繁调用必然导致系统开销增加和耗时增加。所以taro内部对同步方法增加了缓存机制。比如"getSystemSetting"、"getWindowInfo"等。 +如果应用层想扩展,对额外的同步方法使用缓存机制以提高执行效率,则可以通过如下步骤扩展使用缓存的方法: + +#### 明确使用缓存的方法名 +``` +let list = new ArrayList(); +list.add("youMethodName1") +list.add("youMethodName2") + +TaroHybridManager.setCacheSyncMethods(list) +``` + +list是一个方法名的列表,用于标识哪些NativeApi中的方法使用缓存。这里的youMethodName1、youMethodName2为要使用缓存的方法名。 + +#### 监听数据变化更新缓存 +同步方法使用缓存机制可以极大加快api响应速度,但是需要及时更新缓存中的数据。开发者需要在合适的时机监听数据变化,并通过如下方法更新数据 + + +``` +nativeUpdater.update(p: NativeApiPair, v?: any) +``` +举例说明: + +1. youMethodName1方法执行全量数据更新(无入参的情况): + +``` +nativeUpdater.update(new NativeApiPair("YouMethodName1",[])) +``` + + +2. youMethodName1方法执行全量数据更新(有入参的情况): + +``` +nativeUpdater.update(new NativeApiPair("youMethodName1",["param1",123])) +``` +3. youMethodName1方法执行局部数据更新(仅更新其中某个字段:myField): + +``` +nativeUpdater.update(new NativeApiPair("youMethodName1",["param1",123],"myField"),"newData") +``` +#### 注意 +1. 使用缓存机制的方法,必须是同步方法。 +2. 使用缓存机制的方法,在数据发生变化时必须及时更新缓存,并且对数据发生变化的场景做全方位覆盖。否则会带来获取到的数据不是最新的问题。 + + +### Taro.request请求方式选择(原生/js) + +#### 一、Taro.request 原生实现(native桥接)代码位置:taro/packages/taro-platform-harmony-hybrid/src/api/apis/network/request/index.ts + +```typescript + +let task!: Taro.RequestTask + const result: ReturnType = new Promise((resolve, reject) => { + const upperMethod = method ? method.toUpperCase() : method + const taskID = native.request({ + url, + method: upperMethod, + ...otherOptions, + success: (res: any) => { + isFunction(success) && success(res) + isFunction(complete) && complete(res) + resolve(res) + }, + fail: (res: any) => { + isFunction(fail) && fail(res) + isFunction(complete) && complete(res) + reject(res) + }, + }) + task = judgeUseAxios ? taskID : NativeRequest.getRequestTask(taskID) + }) as any +``` + +#### 二、Taro.request js实现(axios)代码位置:taro/packages/taro-platform-harmony-hybrid/src/api/apis/request.ts + +```typescript + +this.httpRequest = axios.create({ + responseType: responseType || 'text', + headers: headers, + timeout: timeout || 2000, + }) + + // 请求拦截器 + this.httpRequest.interceptors.request.use( + (config) => { + if (config.enableCache === false) { + return config + } + // 处理缓存 + const cacheData = localStorage.getItem(config.url) + if (cacheData !== null) { + let result = cacheData + if (dataType === 'json') { + result = JSON.parse(cacheData) + } + source.cancel('cache has useful data!!') + return Promise.resolve({ result }) + } + return config + }, + (error) => { + console.error('error: ', error) + } + ) + + // 响应拦截器 + this.httpRequest.interceptors.response.use( + (response) => { + // 缓存数据 + if (response.config.enableCache === false) { + localStorage.setItem(response.config.url, JSON.stringify(response.data)) + } + callbackManager.headersReceived.trigger({ + header: response.headers + }) + return response + }, + (error) => { + console.error('error: ', error) + } + ) + + if (!object) { + console.error('request error: params illegal') + return + } + + let isFormUrlEncoded = false + for (const key in headers) { + if (key.toLowerCase() === 'content-type') { + if (headers[key].toLowerCase().includes('application/x-www-form-urlencoded')) { + isFormUrlEncoded = true + } + break + } + } + + // data为Object类型时,属性的值类型如果是number, request请求时信息会丢失. 故将data转成string类型进行规避 + if (data && (isFormUrlEncoded || ['GET', 'OPTIONS', 'DELETE', 'TRACE', 'CONNECT'].includes(method))) { + const dataArray = [] + for (const key in data) { + // @ts-ignore + dataArray.push(encodeURIComponent(key) + '=' + encodeURIComponent(data[key])) + } + data = dataArray.join('&') + } + + // header的属性的值类型如果是number, request请求时信息会丢失. 故将各个属性转成string类型 + if (headers) { + for (const key in headers) { + headers[key] = `${headers[key]}` + } + } + + this.httpRequest({ + method: method, + url: url, + CancelToken: source.token, + enableCache: enableCache || false, + }) + .then((response) => { + if (success && !this.abortFlag) { + let result = response.result + if (response.config.responseType === 'text') { + if (dataType === 'text') { + result = response.data + } else if (dataType === 'json') { + result = JSON.parse(response.data) + } else if (dataType === 'base64') { + const encodeData = encodeURIComponent(response.data) + result = btoa(encodeData) + } else if (dataType === 'arraybuffer') { + result = new TextEncoder().encode(response.data).buffer + } else { + console.error('Unsupported dataType!!') + } + } else if (response.config.responseType === 'arraybuffer') { + result = response.data + } else { + console.error('Unsupported dataType!!: ', response.config.responseType) + } + const res = { + data: result, + statusCode: response.status, + header: response.headers, + cookies: response.cookies ? [response.cookies] : [], + errMsg: 'request:ok', + } + this.result = res + success(res) + } + }) + .catch((err) => { + console.error('request error: ' + JSON.stringify(err)) + if (fail && !this.abortFlag) { + // eslint-disable-next-line no-console + const res = { errMsg: errMsgMap.has(err.code) ? errMsgMap.get(err.code) : `${JSON.stringify(err)}` } + this.result = res + fail(res) + } + }) + .finally(() => { + if (complete && !this.abortFlag) { + complete(this.result) + } + if (this.httpRequest) { + source.cancel('requestTask cancelled by the user!') + } + }) +``` + +#### 三、原生、js方式转换实现(proxy代理)代码位置:taro/packages/taro-platform-harmony-hybrid/src/api/apis/NativeApi.ts + +```typescript + +class HybridProxy { + private readonly useAxios: boolean + private readonly useOsChannel: boolean + private readonly cacheProxy: any + private readonly requestApi = 'request' + + constructor (useAxios: boolean, useOsChannel: boolean, nativeApi: NativeApi) { + this.useAxios = useAxios + this.useOsChannel = useOsChannel + this.cacheProxy = new Proxy(nativeApi, new CacheStorageProxy(nativeApi)) + } + + get (_target: any, prop: string) { + return (...args: any) => { + if (this.useAxios && prop === this.requestApi) { + judgeUseAxios = this.useAxios + // @ts-ignore + return new RequestTask(...args) + } + if (this.useOsChannel && osChannelApi.hasOwnProperty(prop)) { + return osChannelApi[prop](...args) + } + return this.cacheProxy[prop](...args) + } + } +} + +const nativeApi = new NativeApi() +const native = new Proxy(nativeApi, new HybridProxy(false, false, nativeApi)) // 第一个false是默认走jsb,true是走纯js, 第二个false是不走osChannel +export default native +``` +#### 注意 +1、转换需要手动修改 const native = new Proxy(nativeApi, new HybridProxy(false, false, nativeApi)) 中 new HybridProxy的第一个参数,改为false为原生实现,若改为true,则为js实现。 + +### 同层渲染 +预计后续530支持 + +`@hybrid/web-container` 提供 `sameLayerManager.registerNativeComponentBuilders` 方法来注册同层渲染组件。 + +**参数说明:** + +| 参数名称 | 类型 | 描述 | 必填 | +|---------------|----------------------------------------------------|----------------------|---------------------| +| componentName | string | 对应embed标签type属性,去掉 `native/` 前缀 | 是 | +| builder | (...args: ESObject[]) => void | 使用 `@Builder` 注解的原生组件builder函数 | 是 | + + +**使用方法:** +- 壳工程中,注册自定义组件: + +```typescript +import { sameLayerManager } from '@hybrid/web-container' + +export default class EntryAbility extends UIAbility { + onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) { + sameLayerManager.registerNativeComponentBuilders('hos-video', NativeVideoBuilder) + } + // ... +} + +``` +- Video 自定义组件实现参考 + +```typescript +import { sameLayerManager } from '@hybrid/web-container'; + +@Observed +export class VideoParams { + width: number // 组件宽度 + height: number // 组件高度 + componentId: string // 组件ID + src: string // 要播放视频的资源地址 + controls?: boolean // 是否显示播放控件 + muted?: boolean // 是否静音 + loop?: boolean + autoPlay?: boolean + onPlay?: (res?: string) => void + onPause?: (res?: string) => void + + constructor() { + this.width = 0; + this.height = 0; + this.componentId = ''; + this.src = ''; + } +} + +@Component +export struct NativeVideo { + @ObjectLink params: VideoParams + videoController: VideoController = new VideoController(); + + build() { + Column() { + Video({ + src: this.params.src, + controller: this.videoController + }) + .objectFit(ImageFit.Fill) + .autoPlay(this.params.autoPlay ?? true) + .muted(this.params.muted ?? false) + .loop(this.params.loop ?? false) + .controls(this.params.controls ?? true) + .onClick((event) => { + console.log('NativeEmbed video onClick.') + }) + .onStart(() => { + console.log('NativeEmbed video onPlay.', this.params.height) + const callJsOnPlay: Function | undefined = (sameLayerManager.getSameLayerArgs(this.params.componentId) as VideoParams)?.onPlay + callJsOnPlay && callJsOnPlay('Native Video playing.') + }) + .onPause(() => { + console.log('NativeEmbed video onPause.') + const callJsOnPause: Function | undefined = (sameLayerManager.getSameLayerArgs(this.params.componentId) as VideoParams)?.onPause + callJsOnPause && callJsOnPause('Native Video paused.') + }) + } + .width(this.params.width) + .height(this.params.height) + } +} + +@Builder +export function NativeVideoBuilder(params: VideoParams) { + NativeVideo({ params: params }) + .backgroundColor(Color.Green) +} + +``` + +- 前端代码中,使用 `react` 框架实现的代码如下: +```typescript +import React from 'react' +import classNames from 'classnames' + +import './index.scss' + +let videoId = 0 + +interface IProps extends React.HTMLAttributes { + src: string + controls?: boolean + autoplay?: boolean + loop?: boolean + muted?: boolean + onPlay?: (res: any) => void + onPause?: (res: any) => void +} + +export default class HosVideo extends React.Component { + private componentId: string + + constructor (props: IProps | Readonly) { + super(props) + this.componentId = `video_${videoId++}` + } + + componentDidMount () { + this.transferVideoProps() + } + + componentDidUpdate (_prevProps: IProps, _prevState: any) { + // 组件更新时重新传输数据 + this.transferVideoProps() + } + + transferVideoProps () { + // 同层渲染video组件数据 + const { + src, + controls, + autoplay, + loop, + muted, + onPlay, + onPause + } = this.props + + const properties = { + componentId: this.componentId, + src: src, + controls: controls, + autoPlay: autoplay, + loop: loop, + muted: muted, + onPlay: onPlay, + onPause: onPause + } + + // @ts-ignore 调用JSB方法传递原生组件数据 + window.JSBridge && window.JSBridge.transferSameLayerArgs(properties) + } + + render () { + const { + style, + className + } = this.props + + return ( +
+ +
+ ) + } +} +``` + + +## FAQ + +### 原生导航条影响Fixed布局 + +**原因:** Web容器与原生导航栏之间是层叠布局,为了不影响H5页面的内容展示,Taro Harmony给每个Page设置了一个padding-top值,其值来自原生注入的一个变量 + +```typescript +// Web组件加载时,原生会给js侧注入的代码: +var navigationHeight = ${this.navigationBarHeight}; + +// 使用方法 +window.navigationHeight +``` + +当存在原生导航栏时,fixed布局需要添加一个top值,其值为window.navigationHeight + +[Web调试devtools配置]: https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/web/web-debugging-with-devtools.md diff --git a/versioned_sidebars/version-3.x-sidebars.json b/versioned_sidebars/version-3.x-sidebars.json index 444bf5a81b23..662f363554f0 100644 --- a/versioned_sidebars/version-3.x-sidebars.json +++ b/versioned_sidebars/version-3.x-sidebars.json @@ -75,7 +75,8 @@ "type": "category", "items": ["react-native", "react-native-remind"] }, - "harmony" + "harmony", + "harmony-hybrid/index" ], "进阶指南": [ "config-detail",