import Vue from 'vue' import VueRouter from 'vue-router' Vue.use(VueRouter) const Home = { template: '
Home
' } const Foo = () => new Promise(resolve => { setTimeout(() => resolve({ template: `
This is Foo
` }) , 10) }) const router = new VueRouter({ mode: 'history', base: __dirname, routes: [ { path: '/', component: Home }, // Just use them normally in the route config { path: '/async', component: Foo } ] }) router.onReady(() => { router.push('/async') }) document.getElementById('load-button').addEventListener('click', (event) => { new Vue({ router, template: `

Async

` }).$mount('#app') event.target.remove() })