Please consider donating to this project's author, EGOIST, to show your ❤️ and support.
yarn add vue-router-prefetch
If you're using Vue 2, you should install vue-router-prefetch@1
instead.
You need to use this plugin after vue-router
:
import { createApp } from 'vue'
import { createRouter } from 'vue-router'
import RouterPrefetch from 'vue-router-prefetch'
const app = createApp()
const router = createRouter()
app.use(router)
app.use(RouterPrefetch)
Then you can use <router-link>
without any changes, when this component is visible in viewport, it will automatically prefetch the (async) route component.
Check out the live demo.
You can also register it as a new component instead of overriding <router-link>
:
app.use(RouterPrefetch, {
componentName: 'QuickLink'
})
Now you can use it as <quick-link>
in your app.
All props of <router-link>
are still available, additional props are listed below.
boolean
true
Whether to prefetch the matched route component.
You can also set meta.prefetch
on vue-router's route
object to disable prefetching this route for all <router-link>
s:
createRouter({
routes: [
{
path: '/some-async-page',
meta: { prefetch: false },
component: () => import('./async-page.vue')
}
]
})
It's also possible to turn of prefetching globally:
app.use(RouterPrefetch, {
prefetch: false
})
string[]
['/foo.css']
A list of additional files to prefetch. By default we only prefetch the route component.
You can also set meta.prefetchFiles
on vue-router's route
object, it will be merged with the prop value:
createRouter({
routes: [
{
path: '/some-async-page',
meta: { prefetchFiles: ['/foo.css'] },
component: () => import('./async-page.vue')
}
]
})
number
2000
(ms)Timeout after which prefetching will occur.
Inspired by quicklink and nuxt-link
.
git checkout -b my-new-feature
git commit -am 'Add some feature'
git push origin my-new-feature
vue-router-prefetch © EGOIST, Released under the MIT License.
Authored and maintained by EGOIST with help from contributors (list).
Website · GitHub @EGOIST · Twitter @_egoistlily