VueJs

Router Link Example In VueJs.

 

Router Link is a technique which helps user to switch among the pages without page refresh. It is an important aspect of building single page application(SPA). So in this post we are going to explain how we can create a Router link in VueJs.

Vue router is the official router for vuejs router link. https://vuejs.org/v2/guide/routing.html

So let’s get started our vuejs router link example by installing and creating a new vuejs project.

Below are the steps to create router link in VueJs.

Create New Vue Project.
vue create vuerouter_example

 

Install Vue Router.
npm install vue-router --save

Import the router inside the Vue.js application. So open the src >> main.js file and write the below code.

 

import Vue from 'vue'
import VueRouter from 'vue-router'

Vue.use(VueRouter)

 

Create Below Component.
  • Home.vue
  • About.vue
  • Login.vue
  • Register.vue

 

Register and import the component inside main.js file.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
import Home from './components/Home'
import Aboutus from './components/Aboutus'
import Login from './components/Login'
import Register from './components/Register'
import Details from './components/Details'
const router = new VueRouter({
mode:'history',
routes: [
{ path: "/", name: "home",component: Home },
{ path: "/aboutus", name: "aboutus",component: Aboutus },
{ path: "/login",name: "login",component: Login },
{ path: "/register",name: "register",component: Register} ,
{ path: "/details/:id",name: "details",component: Details}
]
})
import Home from './components/Home' import Aboutus from './components/Aboutus' import Login from './components/Login' import Register from './components/Register' import Details from './components/Details' const router = new VueRouter({ mode:'history', routes: [ { path: "/", name: "home",component: Home }, { path: "/aboutus", name: "aboutus",component: Aboutus }, { path: "/login",name: "login",component: Login }, { path: "/register",name: "register",component: Register} , { path: "/details/:id",name: "details",component: Details} ] })
import Home from './components/Home'
import Aboutus from './components/Aboutus'
import Login from './components/Login'
import Register from './components/Register'
import Details from './components/Details'

const router = new VueRouter({
  mode:'history',
  routes: [
    { path: "/", name: "home",component: Home },

    { path: "/aboutus", name: "aboutus",component: Aboutus },

    { path: "/login",name: "login",component: Login },

    { path: "/register",name: "register",component: Register}  ,

    { path: "/details/:id",name: "details",component: Details} 
    
  ]
})

 

The default mode for Vue-Router  is hash mode. It uses the URL hash to simulate a full URL so that the page won’t be reloaded when the URL changes.

To get rid of the hash, we can use the router’s history mode.

Here, in the above code we have created four route , home is default router , login , register and details route. In details route we are passing one parameter that is id for getting the details by id.

 

Add Below code in App.vue .

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<template>
<div id="app" class="col-sm-12">
<!-- <b-nav>
<router-link :to="{ name: 'infinite' }" class="nav-link"> <b-button variant="success" active>InfiniteScroll</b-button></router-link>
</b-nav> -->
<b-nav>
<router-link :to="{ name: 'home' }" class="nav-link">Home</router-link>
<router-link :to="{ name: 'aboutus' }" class="nav-link">About Us</router-link>
<router-link :to="{ name: 'login' }" class="nav-link">Login</router-link>
<router-link :to="{ name: 'register' }" class="nav-link">Register</router-link>
<router-link :to="{ name: 'details',params:{id:1} }" class="nav-link">Details</router-link>
</b-nav>
<router-view></router-view>
</div>
</template>
<template> <div id="app" class="col-sm-12"> <!-- <b-nav> <router-link :to="{ name: 'infinite' }" class="nav-link"> <b-button variant="success" active>InfiniteScroll</b-button></router-link> </b-nav> --> <b-nav> <router-link :to="{ name: 'home' }" class="nav-link">Home</router-link> <router-link :to="{ name: 'aboutus' }" class="nav-link">About Us</router-link> <router-link :to="{ name: 'login' }" class="nav-link">Login</router-link> <router-link :to="{ name: 'register' }" class="nav-link">Register</router-link> <router-link :to="{ name: 'details',params:{id:1} }" class="nav-link">Details</router-link> </b-nav> <router-view></router-view> </div> </template>
<template>
  <div id="app" class="col-sm-12">     
        <!-- <b-nav>    
          <router-link :to="{ name: 'infinite' }" class="nav-link"> <b-button variant="success" active>InfiniteScroll</b-button></router-link>
      </b-nav> -->   
   <b-nav>
     <router-link :to="{ name: 'home' }" class="nav-link">Home</router-link>
     <router-link :to="{ name: 'aboutus' }" class="nav-link">About Us</router-link>
    <router-link :to="{ name: 'login' }" class="nav-link">Login</router-link>
    <router-link :to="{ name: 'register' }" class="nav-link">Register</router-link>
     <router-link :to="{ name: 'details',params:{id:1} }" class="nav-link">Details</router-link>
    
  </b-nav>
  <router-view></router-view>
  </div>
</template>

Write Below code in Home.vue .

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<template>
<div>
<b-card title="Home">
<b-card-text>
Welcome to VueJS Router Link Example.
</b-card-text>
</b-card>
</div>
</template>
<template> <div> <b-card title="Home"> <b-card-text> Welcome to VueJS Router Link Example. </b-card-text> </b-card> </div> </template>
<template>  
<div>
    <b-card title="Home">
    <b-card-text>
       Welcome to VueJS Router Link Example.
    </b-card-text>     
  </b-card>    
</div>     
</template>
 

 

Write below code in Aboutus.vue.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<template>
<div>
<b-card title="About Us">
<b-card-text>
Some quick example text to build on the <em>card title</em> and make up the bulk of the card's
content.
</b-card-text>
<b-card-text>A second paragraph of text in the card.</b-card-text>
</b-card>
</div>
</template>
<template> <div> <b-card title="About Us"> <b-card-text> Some quick example text to build on the <em>card title</em> and make up the bulk of the card's content. </b-card-text> <b-card-text>A second paragraph of text in the card.</b-card-text> </b-card> </div> </template>
<template>  
<div>
   <b-card title="About Us">
    <b-card-text>
      Some quick example text to build on the <em>card title</em> and make up the bulk of the card's
      content.
    </b-card-text>
    <b-card-text>A second paragraph of text in the card.</b-card-text>
  </b-card>
</div>     
</template>
 

Update below code in Login.vue.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<template>
<div>
<b-card title="Login">
<b-form>
<b-form-group
id="input-group-1"
label="Email address:"
label-for="input-1"
description="We'll never share your email with anyone else."
>
<b-form-input
id="input-1"
type="email"
placeholder="Enter email"
required
></b-form-input>
</b-form-group>
<b-form-group id="input-group-2" label="Your Name:" label-for="input-2">
<b-form-input
id="input-2"
placeholder="Enter name"
required
></b-form-input>
</b-form-group>
<b-button type="submit" variant="primary">Register</b-button>
</b-form>
</b-card>
</div>
</template>
<template> <div> <b-card title="Login"> <b-form> <b-form-group id="input-group-1" label="Email address:" label-for="input-1" description="We'll never share your email with anyone else." > <b-form-input id="input-1" type="email" placeholder="Enter email" required ></b-form-input> </b-form-group> <b-form-group id="input-group-2" label="Your Name:" label-for="input-2"> <b-form-input id="input-2" placeholder="Enter name" required ></b-form-input> </b-form-group> <b-button type="submit" variant="primary">Register</b-button> </b-form> </b-card> </div> </template>
<template>  
<div>
     <b-card title="Login">
    <b-form>
     <b-form-group
        id="input-group-1"
        label="Email address:"
        label-for="input-1"
        description="We'll never share your email with anyone else."
      >
        <b-form-input
          id="input-1"          
          type="email"
          placeholder="Enter email"
          required
        ></b-form-input>
      </b-form-group>

      <b-form-group id="input-group-2" label="Your Name:" label-for="input-2">
        <b-form-input
          id="input-2"          
          placeholder="Enter name"
          required
        ></b-form-input>
      </b-form-group>
    <b-button type="submit" variant="primary">Register</b-button>      
    </b-form>    
    </b-card>
</div>     
</template>
 

 

Update below code in Register.vue.

 

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<template>
<div>
<b-card title="Register">
<b-form>
<b-form-group
id="input-group-1"
label="Email address:"
label-for="input-1"
description="We'll never share your email with anyone else."
>
<b-form-input
id="input-1"
type="email"
placeholder="Enter email"
required
></b-form-input>
</b-form-group>
<b-form-group id="input-group-2" label="Your Name:" label-for="input-2">
<b-form-input
id="input-2"
placeholder="Enter name"
required
></b-form-input>
</b-form-group>
<b-button type="submit" variant="primary">Register</b-button>
</b-form>
</b-card>
</div>
</template>
<template> <div> <b-card title="Register"> <b-form> <b-form-group id="input-group-1" label="Email address:" label-for="input-1" description="We'll never share your email with anyone else." > <b-form-input id="input-1" type="email" placeholder="Enter email" required ></b-form-input> </b-form-group> <b-form-group id="input-group-2" label="Your Name:" label-for="input-2"> <b-form-input id="input-2" placeholder="Enter name" required ></b-form-input> </b-form-group> <b-button type="submit" variant="primary">Register</b-button> </b-form> </b-card> </div> </template>
<template>  
<div>
      <b-card title="Register">
     <b-form>
     <b-form-group
        id="input-group-1"
        label="Email address:"
        label-for="input-1"
        description="We'll never share your email with anyone else."
      >
        <b-form-input
          id="input-1"          
          type="email"
          placeholder="Enter email"
          required
        ></b-form-input>
      </b-form-group>

      <b-form-group id="input-group-2" label="Your Name:" label-for="input-2">
        <b-form-input
          id="input-2"          
          placeholder="Enter name"
          required
        ></b-form-input>
      </b-form-group>
    <b-button type="submit" variant="primary">Register</b-button>      
    </b-form>    
    </b-card>
</div>     
</template>
 

 

Write below code in Details.vue.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<template>
<div>
<b-card title="Details Page">
<b-card-text>
ID: {{ $route.params.id }}
</b-card-text>
</b-card>
</div>
</template>
<script>
export default {
mounted() {
console.log(this.$route.params.id);
}
}
</script>
<template> <div> <b-card title="Details Page"> <b-card-text> ID: {{ $route.params.id }} </b-card-text> </b-card> </div> </template> <script> export default { mounted() { console.log(this.$route.params.id); } } </script>
<template>  
<div>
    <b-card title="Details Page">
    <b-card-text>
      ID: {{ $route.params.id }}
    </b-card-text>     
  </b-card>    
</div>     
</template>
 
<script>
export default {
    mounted() {
        console.log(this.$route.params.id);
    }
}
</script>

In the above components I have used Bootstrap Vue. To use Bootstrap Vue follow this link https://bootstrap-vue.org/docs.

 

Redirecting Programmatically in Vue Router.
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<template>
</template>
<script>
export default {
mounted() {
this.$router.push('/aboutus');
}
}
</script>
<template> </template> <script> export default { mounted() { this.$router.push('/aboutus'); } } </script>
<template>  
</template> 
<script>
export default {
    mounted() {       
       this.$router.push('/aboutus');
    }
}
</script>

 

Upload File In VueJs With PHP.

Related Articles

Leave a Reply

Check Also
Close
Back to top button