1. Pengantar MEVN Stack dan Shopping Cart
MEVN Stack adalah singkatan dari MongoDB, Express.js, Vue.js, dan Node.js. Ini adalah kombinasi teknologi yang populer untuk membangun aplikasi web modern yang full-stack menggunakan JavaScript di seluruh lapisan.
Dalam ebook ini, kita akan belajar bagaimana mengembangkan sebuah aplikasi shopping cart menggunakan MEVN Stack. Shopping cart adalah fitur penting dalam aplikasi e-commerce yang memungkinkan pengguna memilih produk dan melakukan pembelian.
2. Persiapan Lingkungan Pengembangan
Sebelum mulai coding, pastikan Anda sudah menginstal beberapa alat berikut:
-
Node.js dan npm (Node Package Manager)
-
MongoDB (bisa menggunakan MongoDB Atlas untuk cloud)
-
Code editor seperti Visual Studio Code
-
Postman atau Insomnia untuk testing API
Setelah itu, buat folder proyek dan inisialisasi npm dengan perintah
npm init -y
. Kita akan membuat backend dan frontend secara terpisah.
3. Membuat Backend dengan Node.js dan Express
Backend akan bertugas menyediakan API untuk frontend berinteraksi dengan database. Kita akan menggunakan Express.js sebagai framework web.
npm install express mongoose cors
Berikut contoh kode dasar server Express:
const express = require('express');
const mongoose = require('mongoose');
const cors = require('cors');
const app = express();
app.use(cors());
app.use(express.json());
mongoose.connect('mongodb://localhost:27017/shoppingcart', {
useNewUrlParser: true,
useUnifiedTopology: true,
});
const port = 5000;
app.listen(port, () => {
console.log(`Server berjalan di http://localhost:${port}`);
});
4. Membuat Database MongoDB dan Model Produk
Kita akan membuat model produk untuk menyimpan data produk yang akan ditampilkan di frontend.
const mongoose = require('mongoose');
const productSchema = new mongoose.Schema({
name: { type: String, required: true },
description: String,
price: { type: Number, required: true },
imageUrl: String,
});
module.exports = mongoose.model('Product', productSchema);
Selanjutnya buat route API untuk mendapatkan daftar produk:
const Product = require('./models/Product');
app.get('/api/products', async (req, res) => {
try {
const products = await Product.find();
res.json(products);
} catch (error) {
res.status(500).json({ message: error.message });
}
});
5. Membuat Frontend dengan Vue.js
Frontend akan menampilkan produk dan mengelola shopping cart. Kita akan menggunakan Vue.js untuk membangun antarmuka interaktif.
Buat proyek Vue dengan Vue CLI atau Vite, lalu install Axios untuk request API:
npm install axios
Contoh komponen Vue untuk menampilkan daftar produk:
<template>
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6">
<div v-for="product in products" :key="product._id" class="border rounded-lg p-4 flex flex-col">
<img :src="product.imageUrl" :alt="product.name" class="h-48 object-cover rounded mb-4" />
<h3 class="text-xl font-semibold mb-2">{{ product.name }}</h3>
<p class="flex-grow mb-4">{{ product.description }}</p>
<div class="text-lg font-bold mb-4">Rp {{ product.price.toLocaleString() }}</div>
<button @click="addToCart(product)" class="bg-indigo-600 text-white py-2 rounded hover:bg-indigo-700 transition">Tambah ke Keranjang</button>
</div>
</div>
</template>
<script>
import axios from 'axios';
export default {
data() {
return {
products: [],
};
},
methods: {
async fetchProducts() {
try {
const response = await axios.get('http://localhost:5000/api/products');
this.products = response.data;
} catch (error) {
console.error(error);
}
},
addToCart(product) {
this.$emit('add-to-cart', product);
},
},
mounted() {
this.fetchProducts();
},
};
</script>
6. Menghubungkan Frontend dan Backend
Pastikan backend berjalan di
http://localhost:5000
dan frontend dapat mengakses API tersebut.
Gunakan CORS di backend agar frontend dapat melakukan request. Contoh sudah diberikan pada kode backend sebelumnya.
Jalankan backend dengan:
node index.js
Jalankan frontend dengan:
npm run dev
8. Penutup dan Langkah Selanjutnya
Selamat! Anda telah mempelajari cara mengembangkan shopping cart menggunakan MEVN Stack. Anda dapat mengembangkan lebih lanjut dengan menambahkan fitur autentikasi pengguna, pembayaran online, dan manajemen pesanan.
Jangan lupa untuk mengoptimalkan UI/UX dan mengamankan API backend Anda.