Tutorial Cara Membuat SPA Menggunakan Laravel dan Vue JS #2 : Membuat Component & Router


Fika Ridaul Maulayya
I'm a Full-Stack Web Developer, Content Creator and CO-Founder Santri Koding. I share everything i know with Articles, Screencasts and E-Books at SantriKoding.com

Tutorial Cara Membuat SPA Menggunakan Laravel dan Vue JS #2 : Membuat Component & Router - Halo teman-teman semuanya, di artikel sebelumnya kita sudah membahas cara membuat peoject baru dengan Laravel dan sekaligus cara install Vue JS dan Vue Router menggunakan NPM.

Pada kesempatan kali ini kita akan belajar membuat sebuah component di dalam Vue JS untuk menampilkan content yang akan di tampilkan di layar web browser.

Langkah 1 - Membuat Component

Langsung saja kita mulai, pada praktek kali ini kita bersama-sama akan mencoba membuat beberapa component diantaranya

  • Home - component ini akan kita gunakan menampilkan isi content dari halaman Home.

  • About - component ini akan kita gunakan untuk menampilkan content dari halaman Tentang.

  • Contact - component ini akan kita gunakan untuk menampilkan content dari halaman Kontak.

  • Navigation - dan component ini akan kita gunakan sebagai main menu untuk berpindah halaman dan nanti kita akan jadikan sebagai navbar.

Sekarang, seilahkan teman-teman buat sebuah folder baru dengan nama components dan router di dalam folder resources/js, jadi strukturnya seperti berikut ini :

resources/js/
    ├── components
    ├── router
    ├── app.js
    ├── bootstrap.js

Setelah itu, silahkan buat beberapa file Vue JS di dalam folder component, diantaranya

  • Home.vue
  • About.vue
  • Contact.vue
  • Navigation.vue

Jadi strukturnya kurang lebih sepert berikut ini :

resources/js/
    └── components
        ├── About.vue
        └── Contact.vue
        └── Home.vue
        └── Navigation.vue
    ├── router
    ├── app.js
    ├── bootstrap.js

Silahkan buka file Navigation.vue dan masukkan kode berikut ini :

<template>
    <nav class="navbar navbar-expand-lg navbar-dark bg-dark">
        <router-link :to="{ name: 'home' }" class="navbar-brand">SANTRIKODING</router-link>
        <button class="navbar-toggler" type="button" data-toggle="collapse" data-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 mr-auto">
                <li class="nav-item active">
                    <router-link :to="{ name: 'home' }" class="nav-link">HOME</router-link>
                </li>
                <li class="nav-item">
                    <router-link :to="{ name: 'about' }" class="nav-link">TENTANG</router-link>
                </li>
                <li class="nav-item">
                    <router-link :to="{ name: 'contact' }" class="nav-link">KONTAK</router-link>
                </li>
            </ul>
            <form class="form-inline my-2 my-lg-0">
                <input class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search">
                <button class="btn btn-outline-success my-2 my-sm-0" type="submit">CARI</button>
            </form>
        </div>
    </nav>
</template>

<script>
    export default {


    }
</script>

Buka file Home.vue dan masukkan kode berikut ini :

<template>
    <div class="jumbotron">
        <h1 class="display-4">SANTRI KODING</h1>
        <p class="lead">Belajar Laravel Vue SPA - Single Page Application</p>
        <hr class="my-4">
        <router-link :to="{ name: 'about' }" class="btn btn-primary btn-lg" role="button">SELENGKAPNYA</router-link>
    </div>
</template>

<script>
    export default {


    }
</script>

Buka file About.vue dan masukkan kode berikut ini :

<template>
    <div class="container-fluid" style="margin-top:50px">
        <div class="row justify-content-center">
            <div class="col-md-8">
                <div class="card">
                    <div class="card-body">
                        TENTANG
                        <hr>
                    </div>
                </div>
            </div>
        </div>
    </div>
</template>

<script>
    export default {


    }
</script>

Buka file Contact.vue dan masukkan kode berikut ini :

<template>
    <div class="container-fluid" style="margin-top:50px">
        <div class="row justify-content-center">
            <div class="col-md-8">
                <div class="card">
                    <div class="card-body">
                        KONTAK
                        <hr>
                    </div>
                </div>
            </div>
        </div>
    </div>
</template>

<script>
    export default {


    }
</script>

Langkah 2 - Membuat Vue Router

Oke, setelah beberapa component sudah dibuat, sekarang kita akan membuat router untuk beberapa component kita tadi.

Silahkan buat file baru dengan nama index.js di dalam folder resources/js/router kurang lebih strukturnya seperti berikut ini :

resources/js/
    └── components
        ├── About.vue
        └── Contact.vue
        └── Home.vue
        └── Navigation.vue
    ├── router
        └── index.js
    ├── app.js
    ├── bootstrap.js

Sekarang, silahkan buke file index.js dan masukkan kode di bawah ini :

import Home from '../components/Home.vue'
import About from '../components/About.vue'
import Contact from '../components/Contact.vue'

export default {
    mode: 'history',

    routes: [
        {
            path: '/',
            name: 'home',
            component: Home,
        },
        {
            path: '/about',
            name: 'about',
            component: About,
        },
        {
            path: '/contact',
            name: 'contact',
            component: Contact,
        }
    ]
}

Sekarang, silahkan buka file app.js di dalam folder resources/js dan ubahlah kodenya menjadi seperti berikut ini :

require('./bootstrap');

import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use(VueRouter)

import routes from './router'

Vue.component('navigation', require('./components/Navigation').default);
const app = new Vue({
    el: '#app',
    router: new VueRouter(routes),
});

Langkah 3 - Membuat View

Secara default Laravel memiliki view dengan nama welcome.blade.php dan sekarang kita akan membuat sebuah view baru di dalam folder resources/views dengan nama app.blade.php

Jadi kurang lebih struktur foldernya seperti berikut ini :

resources/views/
    ├── app.blade.php
    ├── welcome.blade.php

Sekarang buka file app.blade.php dan masukkan kode berikut ini :

<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
    <title>Laravel Vue SPA - SantriKoding.com</title>
</head>
<body style="background-color: #edf2f7;">

<main id="app">
    <navigation></navigation>
    <router-view></router-view>
</main>

<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" ></script>
<script src="{{ mix('js/app.js') }}"></script>
</body>
</html>

Langkah 4 - Menambahkan Route di Laravel

Silahkan buka file routes/web.php dan ubah semua kodenya menjadi seperti dibawah ini :

Route::get('/', function () {
    return view('app');
});

Route::view('/{any}', 'app')->where('any', '.*');

Langkah 5 - Compile File JS Dengan Laravel MIX

Sebelum kita menjalankan project kita, kita akan melakukan copile atau bundle semua file JavaScript dan Vue kita menggunakan Laravel MIX.

jalankan perintah dibawah ini untuk melakukan compile :

npm run dev && npm run watch

Silahkan tunggu proses compile sampai selesai, setelah selesai kita bisa melihat project kita dengan mengetikkan di browser http://localhost:8000 atau jika teman-teman menggunakan valet bisa langsung http://laravel-vue-spa.test.

Jika berhasil, kurang lebih hasilnya seperti berikut ini


KESIMPULAN

Kita telah belajar bagaimana cara membuat Vue Component dan Vue Router di. Laravel 6. Jika teman-teman memiliki pertanyaan atau kebingungan saat mencobanya, silahkan bisa berkomentar di bawah ini artikel ini.

Terima Kasih


Fika Ridaul Maulayya
I'm a Full-Stack Web Developer, Content Creator and CO-Founder Santri Koding. I share everything i know with Articles, Screencasts and E-Books at SantriKoding.com
KEBIJAKAN KOMENTAR

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

KOMENTAR