NPM version NPM downloads CircleCI
Please consider donating to this project's author, EGOIST, to show your ❤️ and support.
- Prefetch links when they are visible in viewport.
- You don't need to change your code base to make it work.
- Tiny-size.
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.
- Without polyfills: Chrome, Firefox, Edge, Opera, Android Browser, Samsung Internet.
- With Intersection Observer polyfill ~6KB gzipped/minified: Safari, IE11
All props of <router-link>
are still available, additional props are listed below.
- Type:
boolean
- Default:
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 })
- Type:
string[]
- Examples:
['/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') } ] })
- Type:
number
- Default:
2000
(ms)
Timeout after which prefetching will occur.
Inspired by quicklink and nuxt-link
.
- Fork it!
- Create your feature branch:
git checkout -b my-new-feature
- Commit your changes:
git commit -am 'Add some feature'
- Push to the branch:
git push origin my-new-feature
- Submit a pull request :D
vue-router-prefetch © EGOIST, Released under the MIT License.
Authored and maintained by EGOIST with help from contributors (list).
Website · GitHub @EGOIST · Twitter @_egoistlily