📖 Scenario: You are building a simple Vue 3 application that needs multiple pages. To navigate between pages, you will set up Vue Router.
🎯 Goal: Set up Vue Router in a Vue 3 project with two routes: Home and About. You will create the router, configure routes, and integrate the router with the main Vue app.
📋 What You'll Learn
Create a Vue Router instance with two routes: '/' for Home and '/about' for About
Create two simple Vue components: Home and About
Configure the router with these routes
Integrate the router with the Vue app in main.js
💡 Why This Matters
🌍 Real World
Most Vue apps with multiple pages use Vue Router to manage navigation and page components.
💼 Career
Understanding Vue Router setup is essential for frontend developers working with Vue to build multi-page or SPA applications.
Progress0 / 4 steps
1
Create Home and About components
Create two Vue components named Home.vue and About.vue. Each should have a simple template with an <h1> tag showing "Home Page" and "About Page" respectively.
Vue
Hint
Use the <template> tag and add an <h1> with the page name inside each component file.
2
Create router configuration with routes
Create a file named router.js. Import createRouter and createWebHistory from 'vue-router'. Import the Home and About components. Create a constant routes array with two route objects: one with path: '/' and component: Home, and one with path: '/about' and component: About. Then create a router instance using createRouter with history: createWebHistory() and the routes array. Export the router as default.
Vue
Hint
Remember to import the components and use createRouter with createWebHistory() and the routes array.
3
Integrate router with Vue app
In main.js, import createApp from 'vue', import App.vue, and import the router from './router.js'. Create the Vue app with createApp(App). Use the router with app.use(router). Mount the app to the element with id app.
Vue
Hint
Use createApp to create the app, then add the router with app.use(router), and finally mount it to #app.
4
Add router-view to App.vue
In App.vue, replace the default template content with a <router-view /> component. This will display the matched route component.
Vue
Hint
The <router-view /> tag is where the matched route component will appear.
Practice
(1/5)
1. What is the main purpose of Vue Router in a Vue application?
easy
A. To manage navigation between different pages or views
B. To style components with CSS
C. To handle data fetching from APIs
D. To compile Vue components into JavaScript
Solution
Step 1: Understand Vue Router's role
Vue Router is designed to help Vue apps navigate between different pages or views smoothly.
Step 2: Compare with other options
Styling, data fetching, and compiling are handled by other tools, not Vue Router.
Final Answer:
To manage navigation between different pages or views -> Option A
Quick Check:
Vue Router = Navigation [OK]
Hint: Vue Router controls page navigation in Vue apps [OK]
Common Mistakes:
Confusing Vue Router with styling or data fetching tools
Thinking Vue Router compiles components
Assuming Vue Router manages state
2. Which of the following is the correct way to install Vue Router in a Vue 3 project using npm?
easy
A. npm install vue-router@3
B. npm install vue-router@4
C. npm install vue-router@2
D. npm install vue-router@5
Solution
Step 1: Identify Vue Router version for Vue 3
Vue 3 uses Vue Router version 4, so you must install vue-router@4.
Step 2: Check other versions
Versions 2 and 3 are for Vue 2 or earlier, and version 5 does not exist yet.
Final Answer:
npm install vue-router@4 -> Option B
Quick Check:
Vue 3 uses Vue Router 4 [OK]
Hint: Vue 3 pairs with vue-router version 4 [OK]
Common Mistakes:
Installing older Vue Router versions for Vue 3
Using a non-existent version number
Forgetting to specify version for compatibility
3. Given this Vue Router setup code, what will be the rendered output when navigating to '/about'?
import { createRouter, createWebHistory } from 'vue-router';
import Home from './components/Home.vue';
import About from './components/About.vue';
const routes = [
{ path: '/', component: Home },
{ path: '/about', component: About }
];
const router = createRouter({
history: createWebHistory(),
routes
});
export default router;
And in App.vue template:
<router-view />
medium
A. The Home component content is shown
B. An error occurs because routes are missing
C. Nothing is shown because router is not used
D. The About component content is shown
Solution
Step 1: Understand route matching
When the URL is '/about', Vue Router matches the route with path '/about' and renders the About component.
Step 2: Check router-view usage
The <router-view /> in App.vue displays the matched component, so About content appears.
Final Answer:
The About component content is shown -> Option D
Quick Check:
URL '/about' shows About component [OK]
Hint: URL path matches route, router-view shows that component [OK]
Common Mistakes:
Assuming Home shows for all paths
Forgetting router-view renders matched component
Thinking router must be manually mounted in template
4. What is wrong with this Vue Router setup code?
import { createRouter, createWebHistory } from 'vue-router';
import Home from './components/Home.vue';
import Contact from './components/Contact.vue';
const routes = [
{ path: '/', component: Home },
{ path: '/contact', component: Contact }
];
const router = createRouter({
history: createWebHistory,
routes
});
export default router;
medium
A. Components Home and Contact are not imported
B. Routes array is empty
C. createWebHistory is missing parentheses when used
D. Router is not created with createRouter function
Solution
Step 1: Check createWebHistory usage
createWebHistory is a function and must be called with parentheses: createWebHistory()
Step 2: Verify other parts
Routes are defined with imported components, router is created correctly.
Final Answer:
createWebHistory is missing parentheses when used -> Option C
Quick Check:
Functions need parentheses to execute [OK]
Hint: Call createWebHistory() with () to avoid errors [OK]
Common Mistakes:
Forgetting parentheses on createWebHistory
Believing routes array is empty
Misnaming createRouter function
5. You want to add a navigation menu with links to Home and About pages using Vue Router. Which template code correctly uses Vue Router components for navigation?
hard
A.
B.
C.
D.
Solution
Step 1: Use correct attribute for router-link
The correct attribute to specify the route path is 'to', not 'href'.
Step 2: Use correct path format
Paths must start with '/', so '/about' is correct, while 'about' without slash is incorrect.
Final Answer:
Use <router-link to="/"> and <router-link to="/about"> with router-view -> Option A
Quick Check:
router-link uses 'to' with leading slash paths [OK]
Hint: Use 'to' attribute with leading slash in router-link [OK]
Common Mistakes:
Using 'href' instead of 'to' in router-link
Omitting leading slash in paths
Using plain anchor tags instead of router-link
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.