Skip to content

Commit 06834df

Browse files
committed
docs: 更新说明文档
1 parent f1c33ce commit 06834df

File tree

2 files changed

+23
-11
lines changed

2 files changed

+23
-11
lines changed

MIGRATION.md

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,15 @@
1515
### 3. 移除 `dts` 自动生成功能
1616
插件不再负责生成 `async-import.d.ts``async-component.d.ts` 类型定义文件,相关的 `dts` 配置参数也已移除。
1717

18-
### 4. 暂停对 Vue 文件的 `import()` 动态导入支持
19-
- 目前在代码中使用 `import('./Comp.vue').then(...)` 这种方式动态加载 Vue 文件会与分包优化逻辑冲突,可能导致组件/页面空白。请暂时停止使用这种写法。
20-
- 况且这种做法在小程序端是没有效果的,本项目的早前示例只是一个极端测试。
18+
### 4. 对非法的 `import()` 行为,实现了无感的屏蔽操作
19+
`v2.0.4` 版本开始,插件实现了 **无感屏蔽** 非法的 `import()` 行为,同时会有 log 提示开发者迁移写法
20+
#### 小程序端
21+
- 暂停对 Vue 文件的 `import()` 动态导入支持
22+
- ~~目前在代码中使用 `import('./Comp.vue').then(...)` 这种方式动态加载 Vue 文件会与分包优化逻辑冲突,可能导致组件/页面空白。~~ 随着新版本的到来 `v2.0.4`,可以不用在意这个问题了,如果还存在问题,欢迎反馈🙏
23+
- 况且这种做法在小程序端是没有效果的,本项目的早前示例只是一个极端测试
2124
> 注:针对 JS/TS 模块的动态导入 `import('./module.ts')` 仍然正常支持。
25+
#### APP 端
26+
- app端的编译格式是iife,无法使用`import()`语法,故均视为非法,将全量屏蔽
2227

2328
---
2429

@@ -92,7 +97,8 @@ export default {
9297
- A: 降低学习成本,提供更好的 IDE 类型支持,并使代码更符合标准。
9398

9499
**Q: 动态 `import()` Vue 文件,导致文件对应的组件、页面空白了怎么办?**
95-
- A: 当前版本下禁止再使用这种做法,况且这种做法在小程序端是没有效果的;当前版本这种行为与分包优化的某一个行为有些许冲突。
100+
- A: 这可能是 `v2.0.4` 之前的版本存在的问题,详见本文档 **“破坏性变更”**[此处的说明](#4-对非法的-import-行为实现了无感的屏蔽操作)
101+
- 当前版本下禁止再使用这种做法,况且这种做法在小程序端是没有效果的;当前版本这种行为与分包优化的某一个行为有些许冲突。
96102
- 如果真的是要异步跨包引用一个组件,则改用本文档推荐的 `componentPlaceholder` 配置式方案来实现组件的异步跨包引用。
97103

98104
**Q: `componentPlaceholder` 的值应该填什么?**

README.md

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,18 @@
1616
1717
### 🎏 功能与支持
1818

19-
> !<b style="color: red;">暂时没有对App平台做兼容性实现</b>
20-
>
2119
> 适用于 Uniapp - CLI 或 HBuilderX 创建的 Vue3 项目
2220
2321
- 分包优化
2422
- 模块异步跨包调用
2523
> 允许使用 `import()` 语法,异步引用模块。
2624
>
2725
> 注意,这不是指静态导入,详见[此处](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/import)
26+
>
27+
> `v2.0.4` 版本开始,插件实现了 **无感屏蔽** 非法的 `import()` 行为,同时会有 log 提示开发者迁移写法:
28+
> - 小程序端对 vue 组件文件的 `import()` 是非法的
29+
> - app端的编译格式是iife,无法使用`import()`语法,故均视为非法,将全量屏蔽
30+
>
2831
- 组件异步跨包引用
2932
> 在vue 组件的 `defineOptions` 宏指令或者默认导出下配置 `componentPlaceholder`,eg:
3033
> ```vue
@@ -208,14 +211,17 @@ export default defineConfig({
208211
- `模块异步跨包调用` 是指在一个分包中引用另一个分包中的模块(不限主包与分包),这里的模块可以是 js/ts 模块(插件)。
209212
- `TODO:` 是否支持 json 文件?
210213
- `TODO:` 是否支持 vue 文件?当然,小程序环境引入 vue 文件一般是没有什么意义的。
211-
> 目前实测,小程序环境下,千万不要对一个 vue 组件进行 `import()`
214+
> ~~目前实测,小程序环境下,千万不要对一个 vue 组件进行 `import()`~~
215+
> ~~这会导致这个 vue 组件对应的页面或者文件空白,和 **“分包优化”** 功能有些许冲突”,后续会尽可能填补这个缺陷~~
216+
>
217+
> 随着新版本的到来 `v2.0.4`,对非法的 `import()` 行为,实现了无感的屏蔽操作,同时会有 log 提示开发者迁移写法
212218
>
213-
> 这会导致这个 vue 组件对应的页面或者文件空白,和 **“分包优化”** 功能有些许冲突”,后续会尽可能填补这个缺陷
219+
> 可以不用在意可能会因为这个问题导致的页面空白问题了,如果还存在问题,欢迎反馈🙏,[详见此处](./MIGRATION.md#4-对非法的-import-行为实现了无感的屏蔽操作)
214220
215221
可以直接使用 esm 的原生异步导入语法 `import()` 来实现模块的异步引入。
216222
- h5:原生支持
217223
- mp:转译成 `require.async()`
218-
- app:TODO: 待兼容
224+
- app:app端的编译格式是 `iife`,无法使用 `import()` 语法,本插件将全量屏蔽 `import()` 行为
219225
- 其他 mp:TODO: 未做兼容测试,欢迎反馈
220226

221227
```js
@@ -224,12 +230,12 @@ await import('@/pages-sub-async/async-plugin/index').then((res) => {
224230
console.log(res?.AsyncPlugin()) // 该插件导出了一个具名函数
225231
})
226232

227-
// vue 文件 异步引入(页面文件)❌ 暂时不要这样使用,不要这样引用组件文件
233+
// vue 文件 异步引入(页面文件)❌ 不要这样使用,不要这样引用组件文件
228234
import('@/pages-sub-async/index.vue').then((res) => {
229235
console.log(res.default || res)
230236
})
231237

232-
// vue 文件 异步引入(组件文件)❌ 暂时不要这样使用,不要这样引用组件文件
238+
// vue 文件 异步引入(组件文件)❌ 不要这样使用,不要这样引用组件文件
233239
import('@/pages-sub-async/async-component/index.vue').then((res) => {
234240
console.log(res.default || res)
235241
})

0 commit comments

Comments
 (0)