2
2
3
3
## 基础使用 {#basic-usage}
4
4
5
- 在大型项目中,我们可能需要拆分应用为更小的块,并仅在需要时再从服务器加载。要做到这一点 ,Vue 提供了一个 [ ` defineAsyncComponent ` ] ( /api/general.html#defineasynccomponent ) 方法:
5
+ 在大型项目中,我们可能需要拆分应用为更小的块,并仅在需要时再从服务器加载相关组件。为实现这点 ,Vue 提供了一个 [ ` defineAsyncComponent ` ] ( /api/general.html#defineasynccomponent ) 方法:
6
6
7
7
``` js
8
8
import { defineAsyncComponent } from ' vue'
@@ -16,9 +16,9 @@ const AsyncComp = defineAsyncComponent(() => {
16
16
// ... 像使用其他一般组件一样使用 `AsyncComp`
17
17
```
18
18
19
- 如你所见,此方法接收一个返回 Promise 的加载函数。这个 Promise 的 ` resolve ` 回调方法应该在从服务器获得组件定义时调用。我们也可以在调用 ` reject(reason) ` 表明加载失败。
19
+ 如你所见,` defineAsyncComponent ` 方法接收一个返回 Promise 的加载函数。这个 Promise 的 ` resolve ` 回调方法应该在从服务器获得组件定义时调用。你也可以调用 ` reject(reason) ` 表明加载失败。
20
20
21
- [ ES 模块动态导入] ( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import#dynamic_imports ) 也会返回一个 Promise,所以多数情况下我们会将其和 ` defineAsyncComponent ` 搭配使用,类似 Vite 和 Webpack 这样的构建工具也支持这种语法,因此我们也可以用它来导入 Vue 单文件组件:
21
+ [ ES 模块动态导入] ( https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import#dynamic_imports ) 也会返回一个 Promise,所以多数情况下我们会将它和 ` defineAsyncComponent ` 搭配使用,类似 Vite 和 Webpack 这样的构建工具也支持这种语法,因此我们也可以用它来导入 Vue 单文件组件:
22
22
23
23
``` js
24
24
import { defineAsyncComponent } from ' vue'
@@ -28,7 +28,7 @@ const AsyncComp = defineAsyncComponent(() =>
28
28
)
29
29
```
30
30
31
- 最后得到的 ` AsyncComp ` 是一个被包裹了的组件 ,仅在页面需要它渲染时才调用加载函数。另外,他还会将 props 传给内部的组件,因此,你可以使用这个异步的包裹组件无缝地替换原始组件 ,同时实现延迟加载。
31
+ 最后得到的 ` AsyncComp ` 是一个包裹组件 ,仅在页面需要它渲染时才调用加载函数。另外,它还会将 props 传给内部的组件,所以你可以使用这个异步的包裹组件无缝地替换原始组件 ,同时实现延迟加载。
32
32
33
33
<div class =" options-api " >
34
34
@@ -51,7 +51,7 @@ export default {
51
51
52
52
## 加载与错误状态 {#loading-and-error-states}
53
53
54
- 异步操作不可避免地会涉及到加载和错误状态,因此 ` defineAsyncComponent() ` 也支持在选项中处理这些状态 :
54
+ 异步操作不可避免地会涉及到加载和错误状态,因此 ` defineAsyncComponent() ` 也支持在高级选项中处理这些状态 :
55
55
56
56
``` js
57
57
const AsyncComp = defineAsyncComponent ({
@@ -60,21 +60,21 @@ const AsyncComp = defineAsyncComponent({
60
60
61
61
// 加载异步组件时使用的组件
62
62
loadingComponent: LoadingComponent,
63
- // 展示加载完成的组件前的延迟 ,默认为 200ms
63
+ // 展示加载组件前的延迟时间 ,默认为 200ms
64
64
delay: 200 ,
65
65
66
66
// 加载失败后展示的组件
67
67
errorComponent: ErrorComponent,
68
- // 如果提供了一个 timeout 时间限制,并超过了该时间
69
- // 也会显示报错组件
68
+ // 如果提供了一个 timeout 时间限制,并超时了
69
+ // 也会显示这里配置的报错组件,默认值是:Infinity
70
70
timeout: 3000
71
71
})
72
72
```
73
73
74
- 如果提供了一个加载组件,它将在加载内部组件时首先显示 。在加载组件显示之前有一个默认的 200ms 延迟, 这是因为在网络状况较好时,加载完成得太快。 导致最终组件的替换可能看起来像是闪烁。
74
+ 如果提供了一个加载组件,它将在内部组件加载时先行显示 。在加载组件显示之前有一个默认的 200ms 延迟—— 这是因为在网络状况较好时,加载完成得太快, 导致最终组件的替换可能看起来像是闪烁。
75
75
76
- 如果提供了一个报错组件,当加载器函数返回的 Promise 被 reject 时,它将被显示出来。你还可以指定一个超时时间,在请求花费太长时间后显示 。
76
+ 如果提供了一个报错组件,当加载器函数返回的 Promise 被 reject 时,它将被显示出来。你还可以指定一个超时时间,在请求耗时过长时显示报错组件 。
77
77
78
78
## 搭配 Suspense 使用 {#using-with-suspense}
79
79
80
- 异步组件可以搭配内置的 ` <Suspense> ` 组件一起使用,若想了解 ` <Suspense> ` 和异步组件之间交互,请参阅文档中 [ ` <Suspense> ` ] ( /guide/built-ins/suspense.html ) 这一章 。
80
+ 异步组件可以搭配内置的 ` <Suspense> ` 组件一起使用,若想了解 ` <Suspense> ` 和异步组件之间交互,请参阅文档中 [ ` <Suspense> ` ] ( /guide/built-ins/suspense.html ) 章节 。
0 commit comments