Skip to content

Commit aa37a27

Browse files
committed
feat($core): support async enhanceApp (close vuejs#2074)
1 parent c2bd6de commit aa37a27

File tree

3 files changed

+19
-18
lines changed

3 files changed

+19
-18
lines changed

packages/@vuepress/core/lib/client/app.js

+6-6
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ Vue.prototype.$withBase = function (path) {
5959
}
6060
}
6161

62-
export function createApp (isServer) {
62+
export async function createApp (isServer) {
6363
const routerBase = typeof window !== 'undefined' && window.__VUEPRESS_ROUTER_BASE__
6464
? window.__VUEPRESS_ROUTER_BASE__
6565
: (siteData.routerBase || siteData.base)
@@ -90,11 +90,11 @@ export function createApp (isServer) {
9090
const options = {}
9191

9292
try {
93-
appEnhancers.forEach(enhancer => {
94-
if (typeof enhancer === 'function') {
95-
enhancer({ Vue, options, router, siteData, isServer })
96-
}
97-
})
93+
await Promise.all(
94+
appEnhancers
95+
.filter(enhancer => typeof enhancer === 'function')
96+
.map(enhancer => enhancer({ Vue, options, router, siteData, isServer }))
97+
)
9898
} catch (e) {
9999
console.error(e)
100100
}

packages/@vuepress/core/lib/client/clientEntry.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22

33
import { createApp } from './app'
44

5-
const { app, router } = createApp(false /* isServer */)
6-
75
window.__VUEPRESS__ = {
86
version: VUEPRESS_VERSION,
97
hash: LAST_COMMIT_HASH
108
}
119

12-
router.onReady(() => {
13-
app.$mount('#app')
10+
createApp(false /* isServer */).then(({ app, router }) => {
11+
router.onReady(() => {
12+
app.$mount('#app')
13+
})
1414
})
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
import { createApp } from './app'
22

33
export default context => new Promise((resolve, reject) => {
4-
const { app, router } = createApp(true /* isServer */)
5-
const { url } = context
6-
const { fullPath } = router.resolve(url).route
4+
createApp(true /* isServer */).then(({ app, router }) => {
5+
const { url } = context
6+
const { fullPath } = router.resolve(url).route
77

8-
if (fullPath !== url) {
9-
return reject({ url: fullPath })
10-
}
8+
if (fullPath !== url) {
9+
return reject({ url: fullPath })
10+
}
1111

12-
router.push(url)
13-
router.onReady(() => resolve(app))
12+
router.push(url)
13+
router.onReady(() => resolve(app))
14+
})
1415
})

0 commit comments

Comments
 (0)