Vue Router Introduction – Navigate Your Vue Apps Like a Pro (2025 Guide)
Introduction – What Is Vue Router?
Vue Router is the official routing library for Vue.js, enabling navigation between different views or pages within a Vue application. It’s an essential tool for building Single Page Applications (SPAs) where content changes dynamically without reloading the entire page.
In this guide, you’ll learn:
- What Vue Router is and why it’s needed
- Basic concepts: routes, links, navigation
- Key features: dynamic routing, lazy loading, nested routes
- Real-world examples and best practices
🚦 Why Do You Need Routing in Vue?
When building modern web apps, you often need:
- Multiple pages or views
- Navigation between them
- Back/forward browser support
- Deep linking via URL
Vue Router enables this by mapping URLs to components, keeping the UI and the URL in sync.
Core Concept – What Is a Route?
A route is a mapping between a URL path and a Vue component.
Example:
{
path: '/about',
component: AboutPage
}
When a user visits /about, the AboutPage component is rendered.
Installing Vue Router
Use Vue CLI or manual npm installation:
npm install vue-router
Setting Up Vue Router
router/index.js
import { createRouter, createWebHistory } from 'vue-router'
import Home from '../views/Home.vue'
import About from '../views/About.vue'
const routes = [
{ path: '/', component: Home },
{ path: '/about', component: About }
]
const router = createRouter({
history: createWebHistory(),
routes
})
export default router
main.js
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
createApp(App).use(router).mount('#app')
This integrates routing into your Vue app.
Navigating with <router-link>
Instead of traditional <a> tags, use Vue’s built-in <router-link>:
<router-link to="/about">About</router-link>
This avoids page reloads and uses Vue Router to handle navigation.
Displaying Views with <router-view>
Where do the components render? Inside the <router-view> tag:
<template>
<router-view></router-view>
</template>
This acts as a placeholder for the current route’s component.
Dynamic Routes
Dynamic segments allow parameterized paths:
{ path: '/user/:id', component: UserProfile }
Usage:
<router-link to="/user/42">View User 42</router-link>
Inside UserProfile.vue, access the ID:
this.$route.params.id
Nested Routes
You can nest routes inside parent components:
{
path: '/dashboard',
component: Dashboard,
children: [
{ path: 'stats', component: Stats },
{ path: 'profile', component: UserProfile }
]
}
Useful for layouts that share common elements like sidebars or navbars.
Lazy Loading Routes
Improve performance with code splitting:
{
path: '/about',
component: () => import('../views/About.vue')
}
Vue only loads this component when the route is visited.
Navigation Guards
Control route access based on authentication or roles:
router.beforeEach((to, from, next) => {
if (to.meta.requiresAuth && !isLoggedIn()) {
next('/login')
} else {
next()
}
})
Common Mistakes
| Mistake | Solution |
|---|---|
Using <a href="..."> for routing | Use <router-link> instead |
Forgetting <router-view> | Always include it in App.vue or layout |
| Mixing routes with full-page reloads | Let Vue handle SPA navigation entirely |
Summary – Recap & Next Steps
Vue Router enables SPA navigation with clean URL handling, dynamic components, and deep linking. It forms the backbone of any multi-view Vue.js application.
Key Takeaways:
- Map paths to components using
routes - Use
<router-link>for navigation - Render views using
<router-view> - Add dynamic and nested routing as needed
Real-World Relevance:
Vue Router is essential in building dashboards, blogs, admin panels, or any modern multi-page Vue application.
FAQ Section
What is Vue Router used for?
Vue Router manages navigation and URL routing in Vue Single Page Applications (SPAs).
How do I install and use Vue Router?
Install via npm:
npm install vue-router
Then import and use it in your Vue app.
What is <router-link> in Vue?
It replaces <a> for navigation:
<router-link to="/home">Home</router-link>
What is the purpose of <router-view>?
It’s a placeholder where the matched component for the route renders.
Can I pass parameters in routes?
Yes. Use dynamic routes like /user/:id and access via this.$route.params.id.
Share Now :
