Tutorial Vue 3 dan Laravel 10 #2 : Install dan Konfigurasi Router di Vue 3


Tutorial Vue 3 dan Laravel 10 #2 : Install dan Konfigurasi Router di Vue 3

Halo teman-teman semuanya, pada kesempatan kali ini kita semua akan belajar bagaimana cara melakukan installasi dan konfigurasi router di dalam Vue.js 3 untuk membuat navigasi halaman secara SPA (Single Page Application). Di dalam Vue.js, untuk membuat navigasi secara SPA kita butuh library tambahan yang bernama Vue Router.

Apa itu Vue Router ?

Vue Router merupakan library yang dikembangkan seacara official oleh Vue.js core tim dan digunakan untuk membuat routing yang bersifat SPA (Single Page Application) di dalam Vue.js dengan sangat mudah dan cepat.

INFORMASI SELENGKAPNYA : https://router.vuejs.org/

Langkah 1 - Install Vue Router

Silahkan teman-teman jalankan perintah berikut ini di dalam terminal/CMD dan pastikan sudah berada di dalam project Vue 3.

npm install vue-router@4.1.6

Silahkan tunggu proses installasinya sampai selesai.

Langkah 2 - Integrasi Bootstrap di Vue 3

Disini kita akan melakukan integrasi Bootstrap di dalam project Vue 3. Dan untuk Bootstrap akan kita ambil dari CDN atau Content Delivery Network (Online).

Silahkan buka file index.html, kemudian ubah semua kode-nya menjadi seperti berikut ini.

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <link rel="icon" href="/favicon.ico">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vue 3 + Laravel 10 - SantriKoding.com</title>
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet">
    <style>
      body { background-color: lightgray; font-family: 'Quicksand', sans-serif }
    </style>
  </head>
  <body>
    <div id="app"></div>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/js/bootstrap.bundle.min.js"></script>
    <script type="module" src="/src/main.js"></script>
  </body>
</html>

Di atas, kita menambahkan Bootstrap CSS dan JS dari CDN.

Langkah 3 - Membuat Views

Setelah sebelumnya Vue Router berhasil terinstall, langkah berikutnya adalah melakukan konfigurasi router di dalam aplikasi yang kita kembangkan.

Sebelum masuk di dalam pembuatan router, maka kita harus membuat view-view atau component-nya terlebih dahulu.

View Homepage

Silahkan teman-teman buat folder baru dengan nama views di dalam folder src dan di dalam folder views tersebut silahkan buat file baru dengan nama home.vue, kemudian masukkan kode berikut ini di dalamnya.

<script setup>

</script>

<template>
 <div class="p-5 mb-4 bg-light rounded-3">
   <div class="container-fluid py-5">
     <h1 class="display-5 fw-bold">VUE 3 (VITE) + LARAVEL 10</h1>
     <p class="col-md-8 fs-4">Belajar CRUD dengan Vue 3 dan Laravel 10 di SantriKoding.com</p>
   </div>
 </div>
</template>

Di atas, kita hanya membuat sintaks sederhana menggunakan HTML.

View Posts Index

Silahkan teman-teman buat folder baru dengan nama posts di dalam folder src/views, kemudian di dalam folder posts tersebut buatlah file baru dengan nama index.vue dan masukkan kode berikut ini di dalamnya.

<script setup>

</script>

<template>
 <div class="container mt-5 mb-5">
     <div class="row">
         <div class="col-md-12">
             <div class="card border-0 rounded shadow">
                 <div class="card-body">
                     HALAMAN POSTS INDEX
                 </div>
             </div>
         </div>
     </div>
 </div>
</template>

View Post Create

Silahkan teman-teman buat file baru dengan nama create.vue di dalam folder src/views/posts, kemudian masukkan kode berikut ini di dalamnya.

<script setup>

</script>

<template>
 <div class="container mt-5 mb-5">
     <div class="row">
         <div class="col-md-12">
             <div class="card border-0 rounded shadow">
                 <div class="card-body">
                     HALAMAN POST CREATE
                 </div>
             </div>
         </div>
     </div>
 </div>
</template>

View Post Edit

Terakhir, silahkan teman-teman buat file baru dengan nama edit.vue di dalam folder src/views/posts, kemudian masukkan kode berikut ini di dalamnya.

<script setup>

</script>

<template>
 <div class="container mt-5 mb-5">
     <div class="row">
         <div class="col-md-12">
             <div class="card border-0 rounded shadow">
                 <div class="card-body">
                     HALAMAN POST EDIT
                 </div>
             </div>
         </div>
     </div>
 </div>
</template>

Langkah 4 - Membuat Konfigurasi Router

Setelah semua view berhasil dibuat, maka langkah berikutnya adalah membuat konfigurasi router-nya.

Silahkan teman-teman buat folder baru dengan nama router di dalam folder src dan di dalam folder router silahkan buat file baru dengan nama index.js, kemudian masukkan kode berikut ini di dalamnya.

//import vue router
import { createRouter, createWebHistory } from 'vue-router'

//define a routes
const routes = [
    {
        path: '/',
        name: 'home',
        component: () => import( /* webpackChunkName: "home" */ '../views/home.vue')
    },
    {
        path: '/posts',
        name: 'posts.index',
        component: () => import( /* webpackChunkName: "index" */ '../views/posts/index.vue')
    },
    {
        path: '/create',
        name: 'posts.create',
        component: () => import( /* webpackChunkName: "create" */ '../views/posts/create.vue')
    },
    {
        path: '/edit/:id',
        name: 'posts.edit',
        component: () => import( /* webpackChunkName: "edit" */ '../views/posts/edit.vue')
    }
]

//create router
const router = createRouter({
    history: createWebHistory(),
    routes // <-- routes,
})

export default router

Dari penambahan kode di atas, pertama kita import createRouter dan createWebHistory dari Vue Router.

//import vue router
import { createRouter, createWebHistory } from 'vue-router'

Setelah itu, kita buat variable baru dengan nama routes yang memiliki jenis array. Dan di dalamnya kita berikan deklarasi router-router untuk halaman.

//define a routes
const routes = [

	//...
	
]

Contoh untuk pembuatan router kurang lebih seperti berikut ini.

{
    path: '/',
    name: 'home',
    component: () => import( /* webpackChunkName: "home" */ '../views/home.vue')
}

Dalam pembuatan route yang sederhana, kurang lebih terdapat 3 object, yaitu :

  1. path - digunakan untuk alamat / URL dari route.
  2. name - digunakan untuk penamaan route, ini akan mempermudah kita dalam pemanggilan route nantinya.
  3. component - merupakan lokasi file view yang dipanggil saat route diakses atau dijalankan.

Langkah 5 - Register Route

Agar route bisa diakses dari seluruh aplikasi Vue 3, maka kita perlu mengaturnya secara global. Di dalam Vue 3 untuk mengatur konfigurasi secara global kita bisa letakkan di dalam file main.js.

Jadi, silahkan teman-teman buka file src/main.js, kemudian ubah kode-nya menjadi seperti berikut ini.

//import createApp from Vue
import { createApp } from 'vue';

//import component App
import App from './App.vue';

//import config router
import router from './router'

//create App Vue
const app = createApp(App);

//gunakan "router" di Vue dengan plugin "use"
app.use(router);

app.mount('#app');

Di atas, kita import konfigurasi router-nya terlebih dahulu.

//import config router
import router from './router'

Setelah itu, kita letakkan createApp dari Vue di dalam variable yang bernama app. Ini bertujuan agar kita bisa lebih mudah dalam menggunakannnya.

//create App Vue
const app = createApp(App);

Dan untuk melakukan register router, kita bisa menggunakan keyword use.

//gunakan "router" di Vue dengan plugin "use"
app.use(router);

Langkah 6 - Konfigurasi Router View

Agar view dari router bisa dirender pada halaman browser, maka kita perlu memanggil component dari Vue Router yang bernama <view-router></view-router>.

Di dalam Vue 3, component yang bersifat global adalah App.vue, maka kita akan letakkan component dari Vue Router di dalam file tersebut.

Silahkan buka file src/App.vue, kemudian ubah semua kode-nya menjadi seperti berikut ini.

<template>
  <div>
    <nav class="navbar navbar-expand-lg bg-dark" data-bs-theme="dark">
      <div class="container">
        <router-link :to="{ name: 'home' }" class="navbar-brand">HOME</router-link>
        <button
          class="navbar-toggler"
          type="button"
          data-bs-toggle="collapse"
          data-bs-target="#navbarSupportedContent"
          aria-controls="navbarSupportedContent"
          aria-expanded="false"
          aria-label="Toggle navigation"
        >
          <span class="navbar-toggler-icon"></span>
        </button>
        <div class="collapse navbar-collapse" id="navbarSupportedContent">
          <ul class="navbar-nav me-auto mb-2 mb-lg-0">
            <li class="nav-item">
              <router-link :to="{ name: 'posts.index' }" class="nav-link active" aria-current="page">POSTS</router-link
              >
            </li>
          </ul>
          <ul class="navbar-nav ms-auto mb-2 mb-lg-0" role="search">
            <a
              href="https://santrikoding.com"
              target="_blank"
              class="btn btn-success"
              >SANTRIKODING.COM</a
            >
          </ul>
        </div>
      </div>
    </nav>

    <!--- render router view -->
    <router-view></router-view>

  </div>
</template>

Di atas, kita menambahkan layout untuk project ini dan untuk me-render setiap route pada layout tersebut, kita gunakan kode berikut ini.

<!--- render router view -->
<router-view></router-view>

Langkah 7 - Uji Coba Project

Sekarang silahkan reload / refresh project Vue 3, jika berhasil maka kita akan mendapatkan hasil seperti berikut ini.

Dan jika teman-teman klik menu posts, maka akan diarahkan ke dalam halaman posts index secara SPA atau tidak perlu melakukan reload halaman.

Kurang lebih seperti itu tutorial bagaiamana cara membuat router di dalam Vue 3, jika teman-teman ada kendala saat belajar silahkan bisa bertanya melalui kolom komentar atau group Telegram dari SantriKoding.

Pada artikel selanjutnya kita akan belajar bagaimana cara menampilkan data dari Rest API di dalam Vue 3.

Terima Kasih



Fika Ridaul Maulayya
Full-Stack Developer, Content Creator and CO-Founder SantriKoding.com

Suka dengan tulisan di SantriKoding? Kamu bisa memberikan dukungan dengan berdonasi atau bagikan konten ini di sosial media. Terima kasih atas dukungan Anda!

KEBIJAKAN KOMENTAR

Saat memberikan komenatar silahkan memberikan informasi lengkap tentang error, seperti: screenshot, link kode, dll. Baca aturan komentar kami