Skip to content

Commit 8000be8

Browse files
authored
Merge branch 'master' into hybrid
2 parents dae3e57 + 2061d54 commit 8000be8

File tree

2 files changed

+74
-74
lines changed

2 files changed

+74
-74
lines changed

docs/harmony-hybrid/index.md

Lines changed: 37 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -41,16 +41,16 @@ Options:
4141
├── package.json # Node.js manifest
4242
├── dist # 打包目录
4343
├── project.config.json # 小程序项目配置
44-
── src # 源码目录
45-
├── app.config.js # 全局配置
46-
├── app.css # 全局 CSS
47-
├── app.js # 入口组件
48-
├── index.html # H5 入口 HTML
49-
└── pages # 页面组件
50-
└── index
51-
├── index.config.js # 页面配置
52-
├── index.css # 页面 CSS
53-
└── index.jsx # 页面组件,如果是 Vue 项目,此文件为 index.vue
44+
── src # 源码目录
45+
├── app.config.js # 全局配置
46+
├── app.css # 全局 CSS
47+
├── app.js # 入口组件
48+
├── index.html # H5 入口 HTML
49+
└── pages # 页面组件
50+
└── index
51+
├── index.config.js # 页面配置
52+
├── index.css # 页面 CSS
53+
└── index.jsx # 页面组件,如果是 Vue 项目,此文件为 index.vue
5454
```
5555

5656
通过 Taro CLI 工具基于`默认模板`创建 Taro 工程,使用如下编译命令生成 harmony-hybrid 平台的 Web 资源:
@@ -260,7 +260,7 @@ struct TaroHybridPage {
260260
1. 多容器的判断依据:html的Path路径为判断依赖,相同则共用,不同则新建载体页
261261
2. 容器共用的思路:通过鸿蒙的NodeContainer + NodeController实现
262262
3. 注意:
263-
1. 容器共用存在一个问题:相邻两个原生Page之间如何共用容器,页面切换动画时,会有一个页面白屏,进入和退出时都会出现,尽量避免相邻两个原生Page之间共用容器。
263+
1. 容器共用存在一个问题:相邻两个原生Page之间如果共用容器,页面切换动画时,会有一个页面白屏,进入和退出时都会出现,尽量避免相邻两个原生Page之间共用容器。
264264

265265
## 进阶教程
266266

@@ -301,22 +301,22 @@ static onBack(taroWebController: TaroWebController): boolean {
301301
##### 小程序内置规则
302302
在业务较为复杂的场景时,项目通常分为多个`bundle`,内置到应用时遵循以下目录结构规则:
303303
```
304-
──rawfile # 应用rawfile目录
305-
└──spa # 多bundle内置目录,支持配置
306-
├──spa_main@100000 # 小程序1的bundle
307-
│ └──spa # 一级目录
308-
│ └──main # 二级目录
309-
│ ├──js # js目录
310-
│ ├──css # css目录
311-
│ ├──static # 静态资源目录
312-
│ └──index.html # 首页文件
313-
──spa_new@100000 # 小程序2的bundle
314-
└──spa # 一级目录
315-
└──new # 二级目录
316-
├──js # js目录
317-
├──css # css目录
318-
├──static # 静态资源目录
319-
└──index.html # 首页文件
304+
──rawfile # 应用rawfile目录
305+
└──spa # 多bundle内置目录,支持配置
306+
├──spa_main@100000 # 小程序1的bundle
307+
│ └──spa # 一级目录
308+
│ └──main # 二级目录
309+
│ ├──js # js目录
310+
│ ├──css # css目录
311+
│ ├──static # 静态资源目录
312+
│ └──index.html # 首页文件
313+
──spa_new@100000 # 小程序2的bundle
314+
└──spa # 一级目录
315+
└──new # 二级目录
316+
├──js # js目录
317+
├──css # css目录
318+
├──static # 静态资源目录
319+
└──index.html # 首页文件
320320
```
321321
以上目录结构的解释说明
322322
1. rawfile目录下的spa,为多bundle的内置目录,容器会在此目录下读取bundle加载,支持以下方式配置(该目录要与配置一致):
@@ -332,7 +332,7 @@ GlobalThis.getInstance().setRawFile('spa')
332332
LocalUpdateManager.updateMiniOnLaunch()
333333
```
334334
2. 内置更新缓存至磁盘,若磁盘缓存bundle版本 < rawfile内置版本,则将内置bundle更新至磁盘,具体实现参见以下方法:
335-
```
335+
```typescript
336336
LocalUpdateManager.updateAllMini()
337337
```
338338
3. 更新至磁盘的bundle在容器加载时会被自动查找加载;
@@ -341,7 +341,7 @@ LocalUpdateManager.updateAllMini()
341341
GlobalThis.getInstance().setDiskUpdateEnable(false)
342342
```
343343
##### 热更新
344-
开发中。。。
344+
目前正在开发阶段,暂不支持。
345345
#### 整体方案简介
346346

347347
动态下开发台吗,在不发布新版本的情况下修复`bug`和发布新功能,绕开应用商店的审核机制,避免长时间审核以及多次被拒绝造成的成本问题,缩短用户取得新版本的流程,改善用户体验。
@@ -366,7 +366,7 @@ if (lastVerInfo?.diskCachePath) { // 走本地缓存
366366
}
367367
```
368368

369-
##### 入口函数--`updateMiniOnLaunch`
369+
##### 2、入口函数--`updateMiniOnLaunch`
370370

371371
入口函数`updateMiniOnLaunch`接收一个`context`,首先初始化了基类`UpdateManager`,然后获取了`rawfile`目录下的文件内容,并传入到了`updateAllMini`中进行逻辑处理。
372372

@@ -386,7 +386,7 @@ updateMiniOnLaunch(context: AppContext.UIAbilityContext) {
386386

387387

388388

389-
##### 1、获取`rawfile`文件信息--`getMiniRawList`
389+
##### 3、获取`rawfile`文件信息--`getMiniRawList`
390390

391391
从全局存储中拿出初始化时存储的`rawfile`文件名,根据该文件名称,获取该文件夹下所有的文件信息。
392392

@@ -397,7 +397,7 @@ getRawMiniList(context: common.Context): Array<string>{
397397
}
398398
```
399399

400-
##### 2、更新所有的资源包信息---`updateAllMini`
400+
##### 4、更新所有的资源包信息---`updateAllMini`
401401

402402
该函数接收一个`context``rawfile`文件信息,返回一个`Promise`对象。通过`rawfile`文件信息,构建`LocalVersionInfo`实例对象,该对象存储了对应文件的版本号、业务标识`biz`, 以及`rawfile`路径,将其存储到`UpdateConfig`单例的`Map`对象中,这样在资源拦截时可以从该`Map`中通过相应的业务标识获取到对应资源的信息。`rawfile`目录下的资源可能不是最新的,需要与本地缓存进行对比,如果本地缓存中没有任何资源,则需要将`rawfile`的资源复制到本地沙箱相应位置中,这样可以通过字节码优化,能提高性能。由于`rawfile`文件复制到了沙箱,这样沙箱资源一直都是最新的,所以需要更新存储在`UpdateConfig`单例的`Map`对象的资源信息。
403403

@@ -772,7 +772,7 @@ taro的NativeApi,是taro暴露给鸿蒙实现的原生方法。使得Taro具
772772
如果应用层想扩展,对额外的同步方法使用缓存机制以提高执行效率,则可以通过如下步骤扩展使用缓存的方法:
773773

774774
#### 明确使用缓存的方法名
775-
```
775+
```typescript
776776
let list = new ArrayList<string>();
777777
list.add("youMethodName1")
778778
list.add("youMethodName2")
@@ -786,26 +786,26 @@ list是一个方法名的列表,用于标识哪些NativeApi中的方法使用
786786
同步方法使用缓存机制可以极大加快api响应速度,但是需要及时更新缓存中的数据。开发者需要在合适的时机监听数据变化,并通过如下方法更新数据
787787

788788

789-
```
789+
```typescript
790790
nativeUpdater.update(p: NativeApiPair, v?: any)
791791
```
792792
举例说明:
793793

794794
1. youMethodName1方法执行全量数据更新(无入参的情况):
795795

796-
```
796+
```typescript
797797
nativeUpdater.update(new NativeApiPair("YouMethodName1",[]))
798798
```
799799

800800

801801
2. youMethodName1方法执行全量数据更新(有入参的情况):
802802

803-
```
803+
```typescript
804804
nativeUpdater.update(new NativeApiPair("youMethodName1",["param1",123]))
805805
```
806806
3. youMethodName1方法执行局部数据更新(仅更新其中某个字段:myField):
807807

808-
```
808+
```typescript
809809
nativeUpdater.update(new NativeApiPair("youMethodName1",["param1",123],"myField"),"newData")
810810
```
811811
#### 注意

versioned_docs/version-3.x/harmony-hybrid/index.md

Lines changed: 37 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -41,16 +41,16 @@ Options:
4141
├── package.json # Node.js manifest
4242
├── dist # 打包目录
4343
├── project.config.json # 小程序项目配置
44-
── src # 源码目录
45-
├── app.config.js # 全局配置
46-
├── app.css # 全局 CSS
47-
├── app.js # 入口组件
48-
├── index.html # H5 入口 HTML
49-
└── pages # 页面组件
50-
└── index
51-
├── index.config.js # 页面配置
52-
├── index.css # 页面 CSS
53-
└── index.jsx # 页面组件,如果是 Vue 项目,此文件为 index.vue
44+
── src # 源码目录
45+
├── app.config.js # 全局配置
46+
├── app.css # 全局 CSS
47+
├── app.js # 入口组件
48+
├── index.html # H5 入口 HTML
49+
└── pages # 页面组件
50+
└── index
51+
├── index.config.js # 页面配置
52+
├── index.css # 页面 CSS
53+
└── index.jsx # 页面组件,如果是 Vue 项目,此文件为 index.vue
5454
```
5555

5656
通过 Taro CLI 工具基于`默认模板`创建 Taro 工程,使用如下编译命令生成 harmony-hybrid 平台的 Web 资源:
@@ -260,7 +260,7 @@ struct TaroHybridPage {
260260
1. 多容器的判断依据:html的Path路径为判断依赖,相同则共用,不同则新建载体页
261261
2. 容器共用的思路:通过鸿蒙的NodeContainer + NodeController实现
262262
3. 注意:
263-
1. 容器共用存在一个问题:相邻两个原生Page之间如何共用容器,页面切换动画时,会有一个页面白屏,进入和退出时都会出现,尽量避免相邻两个原生Page之间共用容器。
263+
1. 容器共用存在一个问题:相邻两个原生Page之间如果共用容器,页面切换动画时,会有一个页面白屏,进入和退出时都会出现,尽量避免相邻两个原生Page之间共用容器。
264264

265265
## 进阶教程
266266

@@ -301,22 +301,22 @@ static onBack(taroWebController: TaroWebController): boolean {
301301
##### 小程序内置规则
302302
在业务较为复杂的场景时,项目通常分为多个`bundle`,内置到应用时遵循以下目录结构规则:
303303
```
304-
──rawfile # 应用rawfile目录
305-
└──spa # 多bundle内置目录,支持配置
306-
├──spa_main@100000 # 小程序1的bundle
307-
│ └──spa # 一级目录
308-
│ └──main # 二级目录
309-
│ ├──js # js目录
310-
│ ├──css # css目录
311-
│ ├──static # 静态资源目录
312-
│ └──index.html # 首页文件
313-
──spa_new@100000 # 小程序2的bundle
314-
└──spa # 一级目录
315-
└──new # 二级目录
316-
├──js # js目录
317-
├──css # css目录
318-
├──static # 静态资源目录
319-
└──index.html # 首页文件
304+
──rawfile # 应用rawfile目录
305+
└──spa # 多bundle内置目录,支持配置
306+
├──spa_main@100000 # 小程序1的bundle
307+
│ └──spa # 一级目录
308+
│ └──main # 二级目录
309+
│ ├──js # js目录
310+
│ ├──css # css目录
311+
│ ├──static # 静态资源目录
312+
│ └──index.html # 首页文件
313+
──spa_new@100000 # 小程序2的bundle
314+
└──spa # 一级目录
315+
└──new # 二级目录
316+
├──js # js目录
317+
├──css # css目录
318+
├──static # 静态资源目录
319+
└──index.html # 首页文件
320320
```
321321
以上目录结构的解释说明
322322
1. rawfile目录下的spa,为多bundle的内置目录,容器会在此目录下读取bundle加载,支持以下方式配置(该目录要与配置一致):
@@ -332,7 +332,7 @@ GlobalThis.getInstance().setRawFile('spa')
332332
LocalUpdateManager.updateMiniOnLaunch()
333333
```
334334
2. 内置更新缓存至磁盘,若磁盘缓存bundle版本 < rawfile内置版本,则将内置bundle更新至磁盘,具体实现参见以下方法:
335-
```
335+
```typescript
336336
LocalUpdateManager.updateAllMini()
337337
```
338338
3. 更新至磁盘的bundle在容器加载时会被自动查找加载;
@@ -341,7 +341,7 @@ LocalUpdateManager.updateAllMini()
341341
GlobalThis.getInstance().setDiskUpdateEnable(false)
342342
```
343343
##### 热更新
344-
开发中。。。
344+
目前正在开发阶段,暂不支持。
345345
#### 整体方案简介
346346

347347
动态下开发台吗,在不发布新版本的情况下修复`bug`和发布新功能,绕开应用商店的审核机制,避免长时间审核以及多次被拒绝造成的成本问题,缩短用户取得新版本的流程,改善用户体验。
@@ -366,7 +366,7 @@ if (lastVerInfo?.diskCachePath) { // 走本地缓存
366366
}
367367
```
368368

369-
##### 入口函数--`updateMiniOnLaunch`
369+
##### 2、入口函数--`updateMiniOnLaunch`
370370

371371
入口函数`updateMiniOnLaunch`接收一个`context`,首先初始化了基类`UpdateManager`,然后获取了`rawfile`目录下的文件内容,并传入到了`updateAllMini`中进行逻辑处理。
372372

@@ -386,7 +386,7 @@ updateMiniOnLaunch(context: AppContext.UIAbilityContext) {
386386

387387

388388

389-
##### 1、获取`rawfile`文件信息--`getMiniRawList`
389+
##### 3、获取`rawfile`文件信息--`getMiniRawList`
390390

391391
从全局存储中拿出初始化时存储的`rawfile`文件名,根据该文件名称,获取该文件夹下所有的文件信息。
392392

@@ -397,7 +397,7 @@ getRawMiniList(context: common.Context): Array<string>{
397397
}
398398
```
399399

400-
##### 2、更新所有的资源包信息---`updateAllMini`
400+
##### 4、更新所有的资源包信息---`updateAllMini`
401401

402402
该函数接收一个`context``rawfile`文件信息,返回一个`Promise`对象。通过`rawfile`文件信息,构建`LocalVersionInfo`实例对象,该对象存储了对应文件的版本号、业务标识`biz`, 以及`rawfile`路径,将其存储到`UpdateConfig`单例的`Map`对象中,这样在资源拦截时可以从该`Map`中通过相应的业务标识获取到对应资源的信息。`rawfile`目录下的资源可能不是最新的,需要与本地缓存进行对比,如果本地缓存中没有任何资源,则需要将`rawfile`的资源复制到本地沙箱相应位置中,这样可以通过字节码优化,能提高性能。由于`rawfile`文件复制到了沙箱,这样沙箱资源一直都是最新的,所以需要更新存储在`UpdateConfig`单例的`Map`对象的资源信息。
403403

@@ -772,7 +772,7 @@ taro的NativeApi,是taro暴露给鸿蒙实现的原生方法。使得Taro具
772772
如果应用层想扩展,对额外的同步方法使用缓存机制以提高执行效率,则可以通过如下步骤扩展使用缓存的方法:
773773

774774
#### 明确使用缓存的方法名
775-
```
775+
```typescript
776776
let list = new ArrayList<string>();
777777
list.add("youMethodName1")
778778
list.add("youMethodName2")
@@ -786,26 +786,26 @@ list是一个方法名的列表,用于标识哪些NativeApi中的方法使用
786786
同步方法使用缓存机制可以极大加快api响应速度,但是需要及时更新缓存中的数据。开发者需要在合适的时机监听数据变化,并通过如下方法更新数据
787787

788788

789-
```
789+
```typescript
790790
nativeUpdater.update(p: NativeApiPair, v?: any)
791791
```
792792
举例说明:
793793

794794
1. youMethodName1方法执行全量数据更新(无入参的情况):
795795

796-
```
796+
```typescript
797797
nativeUpdater.update(new NativeApiPair("YouMethodName1",[]))
798798
```
799799

800800

801801
2. youMethodName1方法执行全量数据更新(有入参的情况):
802802

803-
```
803+
```typescript
804804
nativeUpdater.update(new NativeApiPair("youMethodName1",["param1",123]))
805805
```
806806
3. youMethodName1方法执行局部数据更新(仅更新其中某个字段:myField):
807807

808-
```
808+
```typescript
809809
nativeUpdater.update(new NativeApiPair("youMethodName1",["param1",123],"myField"),"newData")
810810
```
811811
#### 注意

0 commit comments

Comments
 (0)