We can navigate to a page when a button is clicked by using the $router property provided by the vue-router package.
Specifically, $router comes with a push method that can be used for navigation to a different page. Let us look at an example to see how this works.
We will begin by creating a new application using Vue CLI.
❯ vue create programmatic-navigation-demo
Once, the installation is complete, we can navigate to the folder and run the server to load the application.
❯ cd programmatic-navigation-demo
❯ npm run serve
This will run our server on port 8080 by default http://localhost:8080/
Next, we will install the vue-router package required for routing. We can install it using CDN, npm or yarn.
npm:
npm install vue-router@4
yarn:
yarn add vue-router@4
Once the package is installed, we can integrate it with our Vue application.
To register the router, we will make changes in the main.js file.
// main.js
import { createApp } from "vue";
import { createRouter, createWebHistory } from "vue-router";
import App from "./App.vue";
const app = createApp(App);
app.mount("#app");
const router = createRouter({
history: createWebHistory(),
routes: [
{
path: "/about",
component: AboutUs,
}
],
});
app.use(router);
In this application, we will have an about page for navigation. Let’s create the component for about page.
// Terminal
❯ touch src/components/AboutUs.vue
Let’s add some code to the AboutUs.vue file.
<!-- AboutUs.vue -->
<template>
<h1>This is about page</h1>
</template>
This component can now be imported in the main.js file.
// main.js
import { createApp } from "vue";
import { createRouter, createWebHistory } from "vue-router";
import App from "./App.vue";
import AboutUs from "./components/AboutUs";
const app = createApp(App);
const router = createRouter({
history: createWebHistory(),
routes: [
{
path: "/about",
component: AboutUs,
},
],
});
app.use(router);
app.mount("#app");
To display the component content, we need to add <router-view> component to the App.vue. Let us also create a button that will call a method to navigate to the /about page.
<!-- App.vue -->
<button @click="goToAboutPage">About Us</button>
<router-view></router-view>
The goToAboutPage() method will make use of the $router property to push the /about page when the button is clicked.
<!-- App.vue -->
goToAboutPage() {
this.$router.push("/about");
}
So, the entire file should now look something like this:
<!-- App.vue -->
<template>
<button @click="goToAboutPage">About Us</button>
<router-view></router-view>
</template>
<script>
export default {
name: "App",
methods: {
goToAboutPage() {
this.$router.push("/about");
},
},
};
</script>
With this let’s run the server and check the output.


Using $router.push() method we are able to navigate to /about page programmatically.
That is it! 😃