Bagian I: Pengenalan
Pada bagian pengenalan ini, kita akan membahas tentang aplikasi CRUD, tujuan pembelajaran dari tutorial ini, serta tools dan teknologi yang akan digunakan dalam pengembangan aplikasi CRUD dengan VueJS menggunakan JSON Server.
Daftar Isi
- Bagian I: Pengenalan
- Bagian II: Persiapan Proyek
- Bagian III: Membuat Komponen CRUD dengan Bootstrap
- Bagian V: Interaksi dengan JSON Server
A. Aplikasi CRUD
Aplikasi CRUD merupakan aplikasi yang memungkinkan pengguna untuk membuat (Create), membaca (Read), mengedit (Update), dan menghapus (Delete) data. Aplikasi jenis ini sangat umum dalam pengembangan perangkat lunak karena banyak aplikasi membutuhkan operasi dasar ini untuk mengelola data. Dengan menggunakan VueJS, Anda dapat membuat aplikasi CRUD yang dinamis dan responsif dengan mudah.
B. Tujuan Pembelajaran
Tujuan dari tutorial ini adalah:
- Memahami konsep dasar aplikasi CRUD.
- Mengembangkan keterampilan pengembangan aplikasi web menggunakan VueJS.
- Mengenal penggunaan JSON Server sebagai mockup server untuk menyediakan API.
- Memahami implementasi operasi CRUD (Create, Read, Update, Delete) dalam aplikasi VueJS.
- Menerapkan interaksi antara aplikasi VueJS dan JSON Server menggunakan Axios.
Dengan mencapai tujuan pembelajaran ini, Anda akan memiliki pemahaman yang kokoh tentang pengembangan aplikasi web menggunakan VueJS serta penggunaan JSON Server sebagai mockup server untuk mengembangkan aplikasi CRUD.
C. Tools dan Teknologi
Dalam tutorial ini, kita akan menggunakan beberapa tools dan teknologi sebagai berikut:
- Vue CLI: Untuk membuat dan mengelola proyek VueJS.
- Vue Router: Untuk mengatur routing dalam aplikasi VueJS.
- Bootstrap: Untuk tampilan yang responsif dan menarik.
- Axios: Untuk melakukan HTTP requests ke JSON Server.
- JSON Server: Sebagai mockup server untuk menyediakan API RESTful.
Dengan kombinasi tools dan teknologi ini, kita akan dapat mengembangkan aplikasi CRUD VueJS yang berfungsi dengan baik dan responsif.
Bagian II: Persiapan Proyek
Dalam bagian ini, kita akan membahas langkah-langkah persiapan proyek untuk pengembangan aplikasi CRUD dengan VueJS menggunakan JSON Server. Ini termasuk pembuatan proyek Vue, instalasi dependencies yang diperlukan, serta setup environment untuk pengembangan.
A. Membuat Proyek Vue
Langkah pertama adalah membuat proyek Vue menggunakan Vue CLI. Vue CLI adalah alat pengembangan resmi untuk Vue.js yang memungkinkan Anda untuk membuat proyek Vue baru dengan cepat dan mudah.
Untuk membuat proyek Vue dengan nama “CrudApp”, jalankan perintah berikut di terminal:
vue create CrudApp
Anda akan diminta untuk memilih opsi konfigurasi proyek. Untuk tutorial ini, Anda dapat menggunakan opsi default atau opsi manual untuk menyesuaikan konfigurasi proyek Anda sesuai kebutuhan.
B. Instalasi Dependencies
Setelah membuat proyek Vue, langkah berikutnya adalah menginstal dependencies yang diperlukan. Untuk aplikasi CRUD kita, kita akan menggunakan Vue Router untuk mengatur routing dan Axios untuk berinteraksi dengan JSON Server.
Instal Vue Router dengan menjalankan perintah berikut di terminal:
cd CrudApp
npm install vue-router
# atau
yarn add vue-router
Code language: PHP (php)
Selanjutnya, instal Axios untuk melakukan HTTP requests ke JSON Server:
npm install axios
# atau
yarn add axios
Code language: PHP (php)
Terakhir, instal Bootstrap untuk tampilan yang responsif dan menarik:
npm install bootstrap
# atau
yarn add bootstrap
Code language: PHP (php)
C. Setup Environment untuk Development
Terakhir, set up environment untuk pengembangan aplikasi. Pastikan Anda memiliki JSON Server diinstal secara global atau sebagai dependency lokal. Anda juga perlu membuat file JSON yang akan digunakan sebagai database.
Untuk menginstal JSON Server secara global, jalankan perintah berikut di terminal:
npm install -g json-server
# atau
yarn global add json-server
Code language: PHP (php)
Setelah instalasi selesai, buat file JSON yang akan berfungsi sebagai database Anda. Misalnya, Anda dapat membuat file db.json
dan menambahkan beberapa data awal ke dalamnya.
{
"posts": [
{ "id": 1, "title": "Post 1", "body": "Content of post 1" },
{ "id": 2, "title": "Post 2", "body": "Content of post 2" },
{ "id": 3, "title": "Post 3", "body": "Content of post 3" }
]
}
Code language: JSON / JSON with Comments (json)
Selanjutnya, jalankan JSON Server dengan perintah berikut di terminal:
json-server --watch db.json --port 3000
Code language: CSS (css)
Dengan langkah-langkah ini, proyek VueJS Anda dengan nama “CrudApp” sudah siap untuk dikembangkan lebih lanjut dengan implementasi aplikasi CRUD dan interaksi dengan JSON Server. Selanjutnya, kita akan mulai membuat komponen-komponen CRUD dan menghubungkannya dengan JSON Server.
D. Struktur Folder Proyek CrudApp
Struktur folder proyek CrudApp
dapat terlihat seperti ini:
CrudApp/
├── node_modules/ # Folder yang berisi semua dependencies proyek
├── public/ # Folder yang berisi file publik seperti index.html
│ └── index.html # Halaman utama aplikasi VueJS
├── src/ # Folder yang berisi kode sumber aplikasi VueJS
│ ├── assets/ # Folder yang berisi aset seperti gambar atau CSS
│ ├── components/ # Folder yang berisi komponen-komponen VueJS
│ │ ├── AddPost.vue # Komponen untuk menambah post baru
│ │ ├── DeletePost.vue # Komponen untuk menghapus post
│ │ ├── EditPost.vue # Komponen untuk mengedit post
│ │ └── PostsList.vue # Komponen untuk menampilkan daftar post
│ ├── router/ # Folder yang berisi konfigurasi Vue Router
│ │ └── index.js # File konfigurasi Vue Router
│ ├── App.vue # Komponen induk aplikasi VueJS
│ └── main.js # File utama yang menentukan titik awal aplikasi VueJS
├── .gitignore # File yang berisi daftar file/folder yang diabaikan oleh Git
├── package.json # File konfigurasi proyek dan daftar dependencies
└── README.md # File README untuk proyek
Code language: PHP (php)
Pada umumnya, struktur folder seperti ini adalah standar untuk proyek VueJS yang dibuat menggunakan Vue CLI. Di dalam folder src
, komponen-komponen VueJS ditempatkan di dalam folder components
, dan konfigurasi Vue Router ditempatkan di dalam folder router
.
File App.vue
adalah komponen induk utama yang menaungi semua komponen lainnya dalam aplikasi. File main.js
adalah file utama yang menentukan titik awal aplikasi VueJS dan menginisialisasi Vue Router.
Folder public
berisi file publik seperti index.html
, yang merupakan halaman utama aplikasi VueJS. File ini adalah titik awal yang dimuat oleh browser saat aplikasi dijalankan.
Folder node_modules
berisi semua dependencies proyek yang diinstal melalui npm atau yarn. Folder ini biasanya cukup besar dan tidak diikutkan dalam version control (misalnya, dengan Git), karena dependencies dapat di-generate ulang dari file package.json
.
.gitignore
adalah file yang berisi daftar file dan folder yang diabaikan oleh Git, sehingga tidak dimasukkan ke dalam repository Git.
package.json
adalah file konfigurasi proyek yang berisi daftar dependencies, skrip npm, dan metadata proyek lainnya.
README.md
adalah file README untuk proyek yang berisi dokumentasi dan informasi penting lainnya tentang proyek.
Bagian III: Membuat Komponen CRUD dengan Bootstrap
Dalam bagian ini, kita akan membuat komponen-komponen untuk melakukan operasi CRUD (Create, Read, Update, Delete) dalam aplikasi VueJS dengan menggunakan Bootstrap untuk tampilan yang responsif dan menarik.
A. Membuat Komponen Tampilan Data
Langkah pertama adalah membuat komponen untuk menampilkan data. Komponen ini akan bertanggung jawab untuk menampilkan daftar data yang diambil dari JSON Server.
- Buat file
PostsList.vue
di dalam foldercomponents
. - Gunakan Bootstrap untuk menata tampilan komponen.
<template>
<div class="container">
<h2>Daftar Post</h2>
<ul class="list-group">
<li class="list-group-item" v-for="post in posts" :key="post.id">{{ post.title }}</li>
</ul>
</div>
</template>
<script>
export default {
data() {
return {
posts: []
};
},
mounted() {
// Ambil data dari JSON Server saat komponen dimount
// Gunakan Axios untuk melakukan GET request ke '/posts'
}
};
</script>
<style>
/* Tidak perlu styling khusus */
</style>
Code language: HTML, XML (xml)
B. Membuat Komponen Tambah Data Baru
Selanjutnya, kita akan membuat komponen untuk menambahkan data baru ke dalam database. Komponen ini akan berisi formulir untuk pengguna memasukkan informasi tentang post baru.
- Buat file
AddPost.vue
di dalam foldercomponents
. - Gunakan Bootstrap untuk menata tampilan formulir.
<template>
<div class="container">
<h2>Tambah Post Baru</h2>
<form @submit.prevent="addPost">
<div class="form-group">
<input type="text" class="form-control" v-model="newPost.title" placeholder="Judul">
</div>
<div class="form-group">
<textarea class="form-control" v-model="newPost.body" placeholder="Isi"></textarea>
</div>
<button type="submit" class="btn btn-primary">Tambah</button>
</form>
</div>
</template>
<script>
export default {
data() {
return {
newPost: {
title: '',
body: ''
}
};
},
methods: {
addPost() {
// Kirim data baru ke JSON Server menggunakan Axios POST request
// Setelah berhasil, kosongkan formulir
}
}
};
</script>
<style>
/* Tidak perlu styling khusus */
</style>
Code language: HTML, XML (xml)
C. Membuat Komponen Edit Data
Selanjutnya, kita akan membuat komponen untuk mengedit data yang sudah ada di database. Komponen ini akan menampilkan formulir pra-diisi dengan informasi post yang sudah ada.
- Buat file
EditPost.vue
di dalam foldercomponents
. - Gunakan Bootstrap untuk menata tampilan formulir edit.
<template>
<div class="container" v-if="post">
<h2>Edit Post</h2>
<form @submit.prevent="updatePost">
<div class="form-group">
<input type="text" class="form-control" v-model="editedPost.title" placeholder="Judul">
</div>
<div class="form-group">
<textarea class="form-control" v-model="editedPost.body" placeholder="Isi"></textarea>
</div>
<button type="submit" class="btn btn-primary">Simpan</button>
</form>
</div>
<div v-else>
<p>Post tidak ditemukan</p>
</div>
</template>
<script>
export default {
data() {
return {
postId: this.$route.params.id,
post: null,
editedPost: {
title: '',
body: ''
}
};
},
mounted() {
// Ambil data post yang akan diedit dari JSON Server saat komponen dimount
// Gunakan Axios untuk melakukan GET request ke '/posts/:id'
// Isi nilai editedPost dengan data post yang diperoleh
},
methods: {
updatePost() {
// Kirim data post yang sudah diedit ke JSON Server menggunakan Axios PUT request
// Setelah berhasil, kembalikan ke halaman sebelumnya
}
}
};
</script>
<style>
/* Tidak perlu styling khusus */
</style>
Code language: HTML, XML (xml)
D. Membuat Komponen Hapus Data
Terakhir, kita akan membuat komponen untuk menghapus data dari database. Komponen ini akan menampilkan konfirmasi sebelum menghapus data.
- Buat file
DeletePost.vue
di dalam foldercomponents
. - Gunakan Bootstrap untuk menata tampilan konfirmasi hapus.
<template>
<div class="container">
<h2>Konfirmasi Hapus</h2>
<p>Apakah Anda yakin ingin meng
hapus post ini?</p>
<button @click="deletePost" class="btn btn-danger">Hapus</button>
<router-link :to="'/'" class="btn btn-secondary">Batal</router-link>
</div>
</template>
<script>
export default {
methods: {
deletePost() {
// Kirim permintaan penghapusan ke JSON Server menggunakan Axios DELETE request
// Setelah berhasil, kembali ke halaman utama
}
}
};
</script>
<style>
/* Tidak perlu styling khusus */
</style>
Code language: HTML, XML (xml)
Dengan menggunakan Bootstrap untuk tampilan komponen CRUD, kita telah membuat aplikasi VueJS yang lebih menarik dan responsif. Sekarang kita sudah siap untuk menghubungkan komponen-komponen ini dengan JSON Server untuk melakukan operasi CRUD pada data yang ada dalam database.
E. Definisi Route untuk CRUD
Untuk melakukan operasi CRUD, kita perlu mendefinisikan route-route yang sesuai di dalam Vue Router. Hal ini akan memastikan bahwa setiap URL di aplikasi kita mengarah ke komponen yang tepat untuk menampilkan, menambahkan, mengedit, atau menghapus data.
- Buka file
router/index.js
di dalam proyek VueJS Anda. - Tambahkan definisi route untuk setiap operasi CRUD yang ingin Anda dukung.
Misalnya, untuk proyek CRUD sederhana ini, Anda dapat menggunakan route berikut:
import Vue from 'vue';
import VueRouter from 'vue-router';
import PostsList from '../components/PostsList.vue';
import AddPost from '../components/AddPost.vue';
import EditPost from '../components/EditPost.vue';
import DeletePost from '../components/DeletePost.vue';
Vue.use(VueRouter);
const routes = [
{
path: '/',
component: PostsList
},
{
path: '/add',
component: AddPost
},
{
path: '/edit/:id',
component: EditPost
},
{
path: '/delete/:id',
component: DeletePost
}
];
const router = new VueRouter({
mode: 'history',
routes
});
export default router;
Code language: JavaScript (javascript)
Dalam contoh di atas:
/
akan menampilkan daftar post (PostsList.vue
)./add
akan menampilkan formulir untuk menambah post baru (AddPost.vue
)./edit/:id
akan menampilkan formulir untuk mengedit post dengan ID tertentu (EditPost.vue
)./delete/:id
akan menampilkan konfirmasi untuk menghapus post dengan ID tertentu (DeletePost.vue
).
Dengan menambahkan definisi route ini, aplikasi VueJS Anda sekarang siap untuk melakukan operasi CRUD dengan navigasi yang sesuai antara halaman-halaman yang terkait. Selanjutnya, mari lanjutkan untuk mengimplementasikan komponen-komponen CRUD dan menghubungkannya dengan JSON Server.
Bagian V: Interaksi dengan JSON Server
Dalam bagian ini, kita akan membahas cara melakukan interaksi antara aplikasi VueJS kita dengan JSON Server. Kita akan menggunakan Axios untuk melakukan HTTP requests ke JSON Server untuk operasi CRUD (Create, Read, Update, Delete) pada data yang ada dalam database.
A. Mengambil Data dari JSON Server
Langkah pertama adalah mengambil data dari JSON Server saat komponen di-mount. Ini akan memastikan bahwa kita memiliki data terbaru untuk ditampilkan dalam aplikasi.
- Buka file
PostsList.vue
di dalam foldercomponents
. - Gunakan Axios untuk melakukan GET request ke endpoint JSON Server yang sesuai untuk mendapatkan data post.
<script>
import axios from 'axios';
export default {
data() {
return {
posts: []
};
},
mounted() {
axios.get('http://localhost:3000/posts')
.then(response => {
this.posts = response.data;
})
.catch(error => {
console.error('Error fetching data:', error);
});
}
};
</script>
Code language: HTML, XML (xml)
B. Menambah Data Baru ke JSON Server
Selanjutnya, kita akan menambahkan kemampuan untuk menambahkan data baru ke dalam database melalui formulir.
- Buka file
AddPost.vue
di dalam foldercomponents
. - Gunakan Axios untuk melakukan POST request ke endpoint JSON Server yang sesuai dengan data baru yang dimasukkan oleh pengguna.
<script>
import axios from 'axios';
export default {
data() {
return {
newPost: {
title: '',
body: ''
}
};
},
methods: {
addPost() {
axios.post('http://localhost:3000/posts', this.newPost)
.then(response => {
console.log('New post added:', response.data);
// Kosongkan formulir setelah berhasil menambahkan post
this.newPost.title = '';
this.newPost.body = '';
})
.catch(error => {
console.error('Error adding post:', error);
});
}
}
};
</script>
Code language: HTML, XML (xml)
C. Mengedit Data di JSON Server
Selanjutnya, kita akan menambahkan kemampuan untuk mengedit data yang sudah ada di database.
- Buka file
EditPost.vue
di dalam foldercomponents
. - Gunakan Axios untuk melakukan PUT request ke endpoint JSON Server yang sesuai dengan data post yang sudah diubah oleh pengguna.
<script>
import axios from 'axios';
export default {
data() {
return {
postId: this.$route.params.id,
post: null,
editedPost: {
title: '',
body: ''
}
};
},
mounted() {
axios.get(`http://localhost:3000/posts/${this.postId}`)
.then(response => {
this.post = response.data;
this.editedPost.title = this.post.title;
this.editedPost.body = this.post.body;
})
.catch(error => {
console.error('Error fetching post:', error);
});
},
methods: {
updatePost() {
axios.put(`http://localhost:3000/posts/${this.postId}`, this.editedPost)
.then(response => {
console.log('Post updated:', response.data);
// Kembali ke halaman sebelumnya setelah berhasil mengupdate post
this.$router.go(-1);
})
.catch(error => {
console.error('Error updating post:', error);
});
}
}
};
</script>
Code language: HTML, XML (xml)
D. Menghapus Data dari JSON Server
Terakhir, kita akan menambahkan kemampuan untuk menghapus data dari database.
- Buka file
DeletePost.vue
di dalam foldercomponents
. - Gunakan Axios untuk melakukan DELETE request ke endpoint JSON Server yang sesuai dengan data post yang akan dihapus.
<script>
import axios from 'axios';
export default {
methods: {
deletePost() {
axios.delete(`http://localhost:3000/posts/${this.$route.params.id}`)
.then(response => {
console.log('Post deleted:', response.data);
// Kembali ke halaman utama setelah berhasil menghapus post
this.$router.push('/');
})
.catch(error => {
console.error('Error deleting post:', error);
});
}
}
};
</script>
Code language: HTML, XML (xml)
Dengan langkah-langkah ini, aplikasi VueJS kita sekarang dapat berinteraksi dengan JSON Server untuk melakukan operasi CRUD pada data yang ada dalam database. Sekarang, kita memiliki aplikasi CRUD yang lengkap dan berfungsi dengan baik!
0 Comments