Express.js : From Zero to Hero — Blog by Muhammad Daffa Ashdaqfillah
Artikel ini menanalisis sebuah framework yang cukup populer digunakan oleh developer yaitu

Published on September 11, 2023
Article Details
Express.js : From Zero to Hero

Express.js : From Zero to Hero
Surabaya, 11 September 2023
https://medium.com/@alfanlukeyanrizki/express-js-from-zero-to-hero-5c2f4ffc1b4d
Sep 12, 2023
Surabaya, 11 September 2023
Oleh,Alfan Lukeyan Rizki, David Ralphwaldo Martuaraja dan Muhammad Daffa’ Ashdaqfillah
Perkembangan web telah menjadi tempat yang sangat dinamis dalam perkembangan teknologi yang sangat cepat. Pada era digital ini, pemilihan framework yang sesuai adalah salah satu keputusan cukup penting yang harus di ambil oleh developer.
Artikel ini menanalisis sebuah framework yang cukup populer digunakan oleh developer dalam pengembangan nya yaitu Express.js. Kami akan mendiskusikan tujuan utama framework tersebut dan mengapa framework tersebut mendapat tempat istimewa dalam komunitas developer. Selain itu, kami akan menguraikan fitur utama, memberikan gambaran ilustrasi asitektur pada framework , dan melakukan perbandingan dengan framework lain nya.

Mengenal Express.js
Express.js merupakan framework open source yang dibuat oleh TJ Holowaychuk pada tahun 2010 lalu. Framework ini digunakan untuk web app Node.js yang ditulis dengan bahasa pemrograman JavaScript.
Sebagai framework back end, Express.js bertanggung jawab untuk mengatur fungsionalitas website, seperti pengelolaan routing dan session, permintaan HTTP, penanganan error, serta pertukaran data di server.
Seperti yang di sampaikan pada laman resmi nya, Express.js memiliki kelebihan fast, unopinionated dan minimalist. Dalam proses pengembangan nya, Express.js di JavaScript merupakan framework yang menggunakan pendekatan Unopinionated. Artinya, pengguna dapat memiliki kebebasan dalam menentukan metode yang akan digunakan untuk mengeksekusi suatu perintah.
Selain itu, Unopinionated mempunyai banyak kelebihan. Sebagai contoh jika anda ingin membangun website dan memiliki konsep arsitektur sendiri untuk di kembangkan maka framework ini cocok untuk anda gunakan.
Fast dan minimalist, ukuran express.js yang cukup ringkas dan ringan karena hanya berisi package inti, sehingga performa nya jauh lebih cepat dibandingkan framework lain. Kinerja website yang anda hasilkan dapat jadi lebih baik, menginat ringan nya framework ini.
Tercatat hingga hari ini framework Express.js telah diunduh lebih dari 28 jt kali. Hal ini menjadi bukti bahwa framework ini cukup populer di berbagai kalangan developer.
Tak dapat dibantahkan framework ini juga memiliki beberapa kekurangan. Untuk sebagian orang atau pemula framework ini dapat membingungkan karena terdapat banyak pilihan plugin dan library untuk di gunakan serta metode pengembangan yang berbeda beda.
Fitur Express.js
- Routing yang tangguh: Sistem routing yang andal untuk mengelola jalur URL dengan efisien dan fleksibel.
- Fokus pada Kinerja Tinggi: Difokuskan pada kinerja tinggi, memungkinkan pengembangan aplikasi yang responsif dan efisien.
- Cakupan Uji yang Sangat Luas: Sejumlah besar pengujian yang meliputi berbagai aspek framework untuk memastikan kestabilan dan kualitas perangkat lunak.
- Pemantauan HTTP (redireksi, caching, dll.): Fasilitas bawaan untuk membantu dalam penanganan HTTP, seperti pengalihan (redireksi) dan caching.
- Sistem Tampilan yang Mendukung 14+ Mesin Template: Sistem tampilan yang kuat yang mendukung lebih dari 14 mesin template berbeda, memungkinkan fleksibilitas dalam merender tampilan aplikasi.
- Negosiasi Konten: Kemampuan untuk bernegosiasi konten dengan klien, sehingga respons dapat disesuaikan dengan preferensi klien, seperti tipe media yang diinginkan.
- Eksekusi Cepat untuk Pembuatan Aplikasi: Menyediakan alat eksekusi cepat yang memungkinkan pembuatan aplikasi secara efisien, menghemat waktu pengembangan.
- Terintegrasi dengan Mean: Express js merupakan bagian dari MEAN Stack, sebuah arsitektur full stack milik JavaScript. MEAN merupakan singkatan dari MongoDB (database), Express.js (back end), Angular (front end), dan Node.js (environment).
- Ekosistem yang besar: Selain MEAN, Express.js memiliki ekosistem yang besar. Faktor utama nya karena Express.js di tulis dengan menggunakan JavaScript. JavaScript memiliki banyak framework, library, compiler, serta resource lain nya.
- Dukungan Komunitas: Developer akan sangat terbantu dengan adanya komunitas yang dapat menjadi tempat untuk berdiskusi mengenai issue dan berbagi tips-tips menarik.
Tutorial Express.js: Instalasi
Prasyarat
Jika anda ingin membuat sebuah project Express.js, terdapat beberapa hal yang anda harus siapkan terlebih dahulu. Sebagai berikut:
- Sebuah local development environment untuk Node.js. Download Node.js tersebut dan kemudian install
Langkah 1 — Inisiasi Project
Pertama, buka terminal anda dan buat directory project baru:
Plain Textmkdir express-appKemudian, beralih ke dalam directory tersebut :
Plain Textcd express-appSetelah itu, anda dapat melakukan inisiasi sebuah npm project baru:
Plain Textnpm init -ySelanjutnya, anda perlu menginstall package Express.js:
Plain Textnpm install [email protected]Langkah 2 — Membuat sebuah Express Server
Sekarang Express telah terinstall, buat sebuah file baru bernama server.js dan open file tersebut di code editor kesayangan anda. Kemudian ikuti kode dibawah ini:
Plain Textconst express = require('express');
const app = express();Pada line pertama kita mengambil modul utama Express.js dari package yang telah anda install. Modul ini merupakan sebuah fungsi, dimana untuk menjalankan line kedua untuk membuat variabel app . Anda dapat membuat lebih dari satu apps dengan cari ini, masing masing dengan permintaan dan responnya sendiri.
Plain Textconst express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Successful response.');
});Pada line kode tersebut, merupakan cara Express server untuk menangani sebuah PermintaanGET kepada server kita. Express memiliki beberapa fungsi yang serupa seperti POST, PUT, dan lain sebagainya. dengan menggunakan app.post(...), app.put(…), dan seterusnya.
Fungsi ini menerima dua parameter utama. Yang pertama adalah URTL yang akan di fungsikan. Dalam hal ini, kita menargetkan '/', yang meruakan root dari situs web kita: dalam hal ini, localhost:3000.
Parameter kedua adalah fungsi dengan dua argumen: req, dan res. req mewakili permintaan yang dikirim ke server; Kita dapat menggunakan objek ini untuk membaca data tentang apa yang diminta klien untuk dilakukan. res mewakili respons yang akan kita kirimkan kembali ke klien.
Di sini, kita memanggil fungsi pada res untuk mengirimkan respons: Successful response..
Plain Textconst express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('Successful response.');
});
app.listen(3000, () => console.log('Hi! This is my first Express apps!'));Akhirnya, setelah kita menyiapkan sebuah permintaan, kita harus memulai server! Kita mempasing 3000 ke fungsi listen , yang memberi tahu aplikasi port mana yang harus didengarkan. Fungsi yang diteruskan sebagai parameter kedua adalah opsional dan berjalan ketika server mulai beroperasi. Ini memberikan kita umpan balik di konsol untuk mengetahui bahwa aplikasi kita sedang berjalan.
Kunjungi kembali terminal Anda dan jalankan aplikasi Anda:
Plain Textnode server.jsKemudian, kunjungi localhost:3000 di browser web Anda. Jendela browser Anda akan menampilkan: ‘Successful response’. Jendela terminal Anda akan menampilkan: Hi! This is my first Express apps!.
Selamat anda telah mempunyai, sebuah server web! Namun, kita pasti ingin mengirim lebih dari sekadar satu baris teks kembali ke klien.
Analisis Perbandingan: Express.js dengan Laravel dan Fastify.js
Laravel
Laravel adalah sebuah framework web yang menggunakan PHP sebagai bahasa pemrogramannya. Tujuan utama dari Laravel adalah untuk mempermudah pengembangan aplikasi web dengan PHP. Laravel menawarkan fitur-fitur modern seperti routing, ORM (Object-Relational Mapping), migration database, dan templating engine yang memungkinkan pengembang untuk membangun aplikasi web dengan cepat dan mudah. Struktur direktori yang sudah terorganisir dengan baik memungkinkan pengembang untuk mengatur kode dan logika bisnis aplikasi web mereka dengan mudah. Laravel juga menyediakan fitur-fitur untuk integrasi dengan layanan cloud, pengelolaan cache, dan manajemen error.
Fastify.js
Fastify.js adalah sebuah framework JavaScript yang berjalan di atas Node.js dan ditulis dalam JavaScript. Fastify.js memperkenalkan konsep dasar “extreme performance” yang difokuskan pada pengiriman pesan HTTP yang cepat dan efisien. Selain itu, Fastify.js juga menghadirkan fitur-fitur modern seperti dukungan untuk GraphQL, dukungan untuk WebSocket, dan dukungan untuk plugin. Fastify.js memiliki dokumentasi yang lengkap dan komunitas yang aktif, sehingga pengembang dapat dengan mudah menemukan solusi untuk masalah yang mereka hadapi dalam pengembangan aplikasi web. Fastify.js bersifat open-source dan didistribusikan di bawah lisensi MIT. Ini memungkinkan pengembang untuk menggunakan Fastify.js secara gratis dan bahkan untuk tujuan komersial.
ORM dan Database
- Express.js: Express.js tidak menyediakan ORM bawaan, tetapi pengembang dapat memilih ORM yang paling sesuai dengan kebutuhan mereka. Hal ini memungkinkan pengembang untuk memilih dan menggunakan komponen yang sesuai dengan kebutuhan mereka dalam membangun aplikasi web dengan Express.js.
- Laravel: Laravel menyediakan Eloquent ORM yang memudahkan pengembang dalam berinteraksi dengan database. Eloquent menyediakan sintaks yang mudah dipahami dan efisien, sehingga memungkinkan pengembang untuk menulis kode yang lebih bersih dan mudah dipahami saat berinteraksi dengan basis data.
- Fastify.js: Fastify.js sama seperti Express.js yang tidak menyediakan ORM bawaan, tetapi memungkinkan pengembang untuk memilih ORM yang paling sesuai dengan proyek mereka. Hal ini memberikan pengembang kebebasan dalam memilih komponen yang ingin mereka gunakan dan membangun aplikasi web yang lebih fleksibel.
Templating Engine
- Express.js: Express.js tidak memiliki templating engine bawaan, tetapi pengembang dapat menggunakan templating engine seperti EJS atau Handlebars sesuai kebutuhan. Fleksibilitas dalam memilih komponen membuat aplikasi web yang dibangun dengan Express.js dapat disesuaikan dengan kebutuhan pengembang.
- Laravel: Laravel menawarkan Blade Templating Engine yang memungkinkan pengembang untuk dengan mudah dan cepat membuat tampilan aplikasi web. Blade Templating Engine menyediakan sintaks yang mudah dipahami dan memungkinkan pengembang untuk membuat tampilan yang dinamis dan menarik. Struktur direktori yang terorganisir dengan baik memudahkan pengembang dalam mengorganisir kode dan logika bisnis aplikasi web.
- Fastify.js: Fastify.js tidak memiliki templating engine bawaan, sehingga pengembang dapat memilih templating engine yang sesuai. Fastify.js difokuskan pada pengiriman pesan HTTP yang cepat dan efisien, dan memperkenalkan konsep validasi skema request pada saat runtime sehingga pengembang dapat menentukan bagaimana request diproses secara lebih efektif dan efisien.
Kinerja
- Express.js: Meskipun Express.js fleksibel, pengiriman pesan HTTP mungkin tidak secepat Fastify.js karena Fastify.js terkenal karena kinerja ekstrimnya. Namun, Express.js masih dipilih oleh banyak pengembang karena fleksibilitasnya.
- Laravel: Kinerja Laravel baik, tetapi tidak secepat Fastify.js. Meskipun demikian, Laravel menawarkan banyak fitur bawaan dan struktur direktori yang terorganisir dengan baik, yang memudahkan pengembang dalam mengorganisir kode aplikasi mereka.
- Fastify.js: Fastify.js dirancang khusus untuk kinerja ekstrim, membuatnya menjadi pilihan terbaik jika performa adalah prioritas utama. Fastify.js menggunakan teknik seperti penggunaan asinkronitas dan validasi skema request pada saat runtime untuk memastikan pengiriman pesan HTTP yang cepat dan efisien.
Performa dan Skalabilitas
Express.js
Express.js adalah kerangka kerja web yang sangat cocok untuk pengembangan aplikasi web dengan kinerja tinggi. Kelebihannya terletak pada penggunaan Node.js yang non-blokir dan middleware yang ringan, sehingga aplikasi dapat merespons dengan cepat. Fleksibilitas dalam struktur aplikasi memungkinkan pengembang untuk mengoptimalkan kode sesuai kebutuhan proyek. Express.js mendukung teknik caching dan server load balancer untuk meningkatkan performa dan skalabilitas, serta alat bantu eksternal seperti PM2 dan Nginx. Dalam situasi di mana performa dan skalabilitas adalah faktor penting, Express.js menjadi pilihan yang kuat.
Laravel
Laravel adalah kerangka kerja web PHP yang menawarkan kombinasi kinerja baik dan fitur modern. Performa yang baik diberikan oleh PHP yang efisien dalam mengelola I/O dan memori, serta dukungan untuk caching dan server load balancer. Laravel memiliki Eloquent ORM yang memungkinkan pengembang untuk berinteraksi dengan database secara efisien. Blade Templating Engine mempermudah pembuatan tampilan yang responsif, sedangkan struktur terorganisir Laravel memungkinkan skalabilitas dan pemeliharaan yang baik. Laravel adalah pilihan yang solid untuk proyek-proyek PHP yang memerlukan performa dan kemudahan pengembangan.
Fastify.js
Fastify.js adalah kerangka kerja JavaScript dengan fokus pada kinerja dan responsivitas tinggi. Fastify.js mampu menjaga responsivitas aplikasi bahkan saat menghadapi banyak permintaan secara bersamaan berkat arsitektur asinkron yang unggul. Teknik caching yang efisien dan manajemen memori yang baik membantu meningkatkan performa aplikasi. Dukungan untuk HTTP/2 dan WebSocket memungkinkan pengembangan aplikasi real-time yang responsif. Sistem plugin yang kuat memfasilitasi penambahan fungsionalitas tambahan tanpa mengorbankan kinerja.
Jadi, ketiga framework — Express.js, Laravel, dan Fastify.js — memiliki pendekatan yang berbeda dalam menghadapi performa dan skalabilitas aplikasi web. Express.js dan Laravel mengandalkan pengoptimalan dengan menggunakan caching, server load balancer, dan teknik pengiriman file statis. Sementara itu, Fastify.js memiliki keunggulan dalam responsivitas tinggi berkat pendekatan asinkron dan dukungan terhadap teknologi modern seperti HTTP/2 dan WebSocket. Fastify.js juga menekankan penggunaan caching yang efisien serta manajemen memori yang baik.
Popularitas (Komunitas dan Adaptasi Industri)
Express.js
Express.js adalah salah satu framework web yang sangat populer untuk pengembangan aplikasi dengan Node.js. Keunggulan utama Express.js adalah fleksibilitas dan skalabilitasnya yang luar biasa, membuatnya cocok untuk proyek-proyek dengan berbagai ukuran dan kompleksitas. Pengembang dapat dengan mudah menemukan sumber daya online seperti dokumentasi, tutorial, dan forum yang mendukung penggunaan Express.js. Di dunia industri, Express.js memiliki posisi yang kuat, digunakan oleh perusahaan-perusahaan besar seperti IBM, Uber, dan Accenture, serta sering digunakan untuk mengembangkan API RESTful yang efisien dan mudah dielola.
Express.js adalah pilihan yang solid untuk pengembang yang ingin membangun aplikasi web yang fleksibel dan skalabel dengan Node.js. Dengan dukungan komunitas yang besar dan adopsi industri yang kuat, Express.js tetap menjadi salah satu framework web yang paling diminati di dunia pengembangan aplikasi web.
Laravel
Laravel adalah salah satu kerangka kerja (framework) web yang populer dan banyak diadopsi oleh komunitas pengembang. Laravel memiliki kehadiran yang kuat di industri, dengan banyak perusahaan menggunakan Laravel untuk membangun aplikasi web dan layanan. Beberapa perusahaan besar yang menggunakan Laravel termasuk BBC, Pfizer, Redfin, serta situs web populer seperti Deltanet, Neighbourly, dan GiveIndia.
Laravel memiliki komunitas pengembang yang besar dan aktif yang berkontribusi pada pengembangan dan penggunaannya untuk berbagai jenis aplikasi. Komunitas Laravel menyediakan berbagai sumber daya online bagi pengembang, termasuk dokumentasi, tutorial, dan forum. Sumber daya online paling populer untuk komunitas pengembang Laravel termasuk situs web resmi Laravel, Laracasts, Laravel News, dan repositori GitHub Laravel.
Fastify.js
Fastify.js adalah sebuah framework JavaScript yang relatif baru, tetapi telah mendapatkan popularitas yang cukup besar di kalangan pengembang dan industri. Meskipun belum sepopuler Express.js atau Laravel, Fastify.js terus berkembang dan diadopsi oleh komunitas pengembang yang semakin besar.
Fastify.js telah digunakan oleh beberapa proyek terkenal, seperti aplikasi streaming video DAZN, aplikasi chat real-time Tawk.to, dan situs web penyedia jasa teknologi Airtable. Selain itu, banyak perusahaan lain yang menggunakan Fastify.js untuk membangun aplikasi web, seperti IBM, N26, dan Trivago.
Fastify.js memiliki komunitas pengembang yang aktif, yang menyediakan banyak sumber daya online bagi pengembang. Sumber daya online paling populer untuk komunitas pengembang Fastify.js adalah situs web resmi Fastify.js, dokumentasi Fastify.js, dan repositori GitHub Fastify.js. Selain itu, ada juga beberapa situs web dan forum komunitas yang membahas Fastify.js, seperti Reddit dan Stack Overflow.
Kelebihan dan Kelemahan
Express.js
Kelebihan:
- Fleksibilitas: Express.js sangat fleksibel, memungkinkan pengembang untuk membangun aplikasi web sesuai dengan preferensi mereka. Mereka dapat memilih middleware dan komponen yang ingin digunakan.
- Performa: Express.js berjalan di atas Node.js, yang dikenal karena kinerja tinggi dan non-blokir. Ini memungkinkan Express.js menangani lalu lintas web yang padat dengan efisien.
- Komunitas dan Dokumentasi: Framework ini memiliki komunitas yang besar dan dokumentasi yang kuat, membuatnya mudah dipelajari dan didukung oleh sumber daya online yang kaya.
Kelemahan:
- Kekurangan Fitur Bawaan: Beberapa fitur yang ada di framework lain seperti Laravel tidak ada di Express.js, sehingga pengembang mungkin perlu mencari dan mengintegrasikan komponen pihak ketiga untuk memenuhi kebutuhan aplikasi.
- Kurangnya Struktur Baku: Meskipun fleksibel, Express.js tidak menyediakan struktur baku yang jelas, yang dapat membuat aplikasi menjadi kurang terorganisir jika tidak diatur dengan baik.
Laravel
Kelebihan:
- Struktur Terorganisir: Laravel memiliki struktur direktori baku yang membantu pengembang mengorganisir kode dan logika bisnis aplikasi dengan baik menggunakan arsitektur MVC.
- Fitur-fitur Bawaan: Laravel dilengkapi dengan berbagai fitur bawaan seperti Eloquent ORM, Blade Templating Engine, dan Artisan CLI Tool, yang mempercepat pengembangan aplikasi web.
- Komunitas Besar: Framework ini memiliki komunitas besar dengan banyak sumber daya online, seperti tutorial dan forum, yang dapat membantu pengembang dalam mengatasi masalah dan belajar lebih lanjut.
- Performa yang Baik: Meskipun tidak secepat Express.js atau Fastify.js, Laravel masih memiliki performa yang baik untuk kebanyakan aplikasi web.
Kelemahan:
- Kurangnya Kecepatan: Laravel mungkin tidak sesuai untuk aplikasi yang membutuhkan kinerja ekstrem seperti aplikasi real-time yang sangat padat.
- Kompleksitas: Meskipun banyak fitur yang membantu, kompleksitas beberapa fitur seperti Eloquent ORM bisa membuat pengembang baru merasa overwhlemed.
Fastify.js
Kelebihan:
- Kinerja Unggul: Fastify.js dikenal karena kinerjanya yang sangat cepat dan efisien, membuatnya cocok untuk aplikasi dengan lalu lintas tinggi.
- Validasi Skema Request: Kemampuan untuk melakukan validasi skema request pada saat runtime memungkinkan pengembang mengelola permintaan secara lebih efisien.
- Dukungan untuk Asinkronitas: Fastify.js mendukung asinkronitas pada seluruh API-nya, memungkinkan pengembang untuk menulis kode yang lebih bersih.
- Dukungan untuk GraphQL dan WebSocket: Fastify.js memiliki dukungan yang baik untuk teknologi seperti GraphQL dan WebSocket, yang ideal untuk aplikasi real-time.
Kelemahan:
- Komunitas yang Lebih Kecil: Meskipun berkembang, komunitas Fastify.js lebih kecil dibandingkan dengan Express.js atau Laravel, yang bisa membuat sulit menemukan solusi untuk masalah yang kompleks.
- Kekurangan Fitur Bawaan: Seperti Express.js, Fastify.js mungkin membutuhkan integrasi komponen pihak ketiga untuk beberapa fitur yang tidak disediakan secara bawaan.
Perbandingan Cepat

Struktur dan Organisasi (Architecture)
Node.js :

Express.js adalah framework yang menggunakan Node.js untuk membangun aplikasi web. Struktur aplikasi pada Express.js tidak memiliki struktur baku yang jelas, sehingga pengembang memiliki kebebasan dalam mengatur kode mereka. Node.js menggunakan arsitektur event-driven dan non-blocking I/O, di mana setiap permintaan masuk ke dalam event queue dan akan dieksekusi oleh event loop. Jika ada operasi yang membutuhkan waktu lama, seperti mengakses database, maka operasi tersebut akan dieksekusi pada worker thread agar tidak mengganggu event loop. Dalam hal ini, Express.js sangat cocok untuk membangun aplikasi web dengan lalu lintas tinggi karena dapat menangani permintaan dengan cepat dan efisien.
MVC (Model — View — Controller) :

Express.js menawarkan struktur yang terorganisir dengan baik dan menggunakan arsitektur MVC untuk membangun aplikasi web. Model digunakan untuk mengakses data pada database, View digunakan untuk menampilkan data, dan Controller digunakan untuk mengelola permintaan HTTP.
Alur HTTP Request :

Alur HTTP request pada Express.js dimulai dengan HTTP request yang masuk ke server. Pertama, Express.js akan mencocokkan request dengan route yang sesuai. Kemudian, middleware CORS akan mengecek apakah request yang masuk diizinkan oleh server. Selanjutnya, middleware CSRF akan memvalidasi apakah request yang masuk asli atau palsu. Jika request dinyatakan valid, maka akan dilakukan proses autentikasi menggunakan middleware Auth. Setelah itu, Express.js akan menjalankan tugas utama yang telah ditentukan dalam code aplikasi. Terakhir, akan dikirimkan HTTP response yang sesuai dengan request yang masuk.
Contoh Source Code
Membuat route
Untuk membuat route baru, kita dapat menggunakan fungsi dari method yang akan digunakan untuk route tersebut. Misal, jika kita ingin membuat route untuk request method GET, kita dapat menggunakan fungsi app.get(). Di fungsi ini, kita dapat menambahkan path yang akan digunakan untuk route yang kita buat, dan fungsi yang akan dipanggil ketika kita melakukan GET request ke path tersebut. Berikut adalah contoh kode untuk membuat route baru.
Plain Textvar express = require('express');
var app = express();
app.get('/test', function(req, res) {
res.send('Hello, world!')
});
app.listen(3000);Membuat controller
Untuk membuat controller, pertama kita sebagai contoh dapat membuat sebuah file baru bernama routes/products.js. Di dalamnya, kita dapat menambahkan kode berikut. Kita menambahkan nama - nama dari route dan path untuk route yang ingin kita buat.
Plain Textconst express = require('express')
const router = express.Router()
const {
getProducts,
getProduct,
createProduct,
updateProduct,
deleteProduct
} = require('../controllers/products.js')
router.get('/', getProducts)
router.get('/:productID', getProduct)
router.post('/', createProduct)
router.put('/:productID', updateProduct)
router.delete('/:productID', deleteProduct)
module.exports = routerSelanjutnya, kita dapat membuat file baru bernama controllers/products.js. Di dalam file ini, kita akan membuat implementasi untuk setiap route yang sudah kita buat di dalam file routes/products.js. Berikut adalah kodenya.
Plain Textconst products = require('../data.js')
const getProducts = ((req, res) => {
res.json(products)
})
const getProduct = ((req, res) => {
const id = Number(req.params.productID)
const product = products.find(product => product.id === id)
if (!product) {
return res.status(404).send('Product not found')
}
res.json(product)
})
const createProduct = ((req, res) => {
const newProduct = {
id: products.length + 1,
name: req.body.name,
price: req.body.price
}
products.push(newProduct)
res.status(201).json(newProduct)
})
const updateProduct = ((req, res) => {
const id = Number(req.params.productID)
const index = products.findIndex(product => product.id === id)
const updatedProduct = {
id: products[index].id,
name: req.body.name,
price: req.body.price
}
products[index] = updatedProduct
res.status(200).json('Product updated')
})
const deleteProduct = ((req, res) => {
const id = Number(req.params.productID)
const index = products.findIndex(product => product.id === id)
products.splice(index,1)
res.status(200).json('Product deleted')
})
module.exports = {
getProducts,
getProduct,
createProduct,
updateProduct,
deleteProduct
}Setelah itu, agar kita dapat menggunakan route dan controller yang sudah kita buat, kita dapat menambahkan kode berikut dalam file main.js kita.
Plain Textconst express = require('express')
const app = express()
const products = require('./data.js')
const products_routes = require('./routes/products.js')
app.listen(5000, () => {
console.log('server is listening on port 5000')
})
app.use(express.json())
app.use('/api/products', products_routes)Membuat model
Database yang sering digunakan dengan ExpressJS adalah MongoDB, yang merupakan database NoSQL. Agar bisa menggunakan MongoDB dengan ExpressJS, diperlukan sebuah Client API. Salah satu Client API yang sering digunakan adalah Mongoose. Untuk menginstall Mongoose, dapat menjalankan perintah berikut. npm install --save mongoose
Setelah itu, kita harus membuat sebuah database. Untuk membuat database baru, pertama kita harus membuka terminal dan mengetikkan perintah mongo. Ini akan membuka shell Mongo, dan di dalam shellnya kita dapat mengetikkan perintah berikut untuk membuat database baru yang bernama test_db. use test_db
Agar bisa menggunakan Mongoose, kita perlu menambahkan kode berikut.
Plain Textvar mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test_db');Setelah kita terhubung dengan database yang telah kita buat, kita dapat membuat sebuah model baru. Berikut ada contoh kode untuk membuat model. Kode tersebut harus ditambahkan sebelum kita membuat route.
Plain Textvar personSchema = mongoose.Schema({
name: String,
age: Number,
nationality: String
});
var Person = mongoose.model("Person", personSchema);Kode tersebut akan membuat model baru yang bernama Person.
Membuat service
Service pada Express.js digunakan untuk mengelola operasi-operasi yang lebih kompleks dan abstrak yang mungkin melibatkan beberapa model atau logika bisnis tambahan. Service dapat digunakan oleh controller untuk menjalankan operasi-operasi tertentu.
Untuk membuat sebuah sevice, pertama kita dapat membuat sebuah file baru dalam directory services. Sebagai contoh, file bernama services/productServices.js. Didalamnya, kita dapat implementasi untuk setiap route yang sudah kita buat di dalam file routes/products.js.
Plain Textconst barangRepository = require('../repositories/products');
const getProduct = async () => {
try {
const data = await barangRepository.getProduct();
return data;
}
catch (error) {
throw error;
}
}
const getProduct = async (id) => {
try {
const data = await barangRepository.getProduct(id);
return data;
}
catch (error) {
throw error;
}
}
const createProduct = async (data) => {
try {
const created = await barangRepository.createProduct(data);
return created;
}
catch (error) {
throw error;
}
}
const updateProduct = async (data, id) => {
try {
const updated = await barangRepository.updateProduct(data, id);
return updated;
}
catch (error) {
throw error;
}
}
const deleteProduct = async (id) => {
try {
const deleted = await barangRepository.deleteProduct(id);
return deleted;
}
catch (error) {
throw error;
}
}
module.exports = {
getProducts,
getProduct,
createProduct,
updateProduct,
deleteProduct
}Membuat middleware
Untuk membuat middleware, kita dapat menggunakan fungsi use pada app yang telah kita buat. Dalam fungsi tersebut, kita menambahkan fungsi dari middleware yang kita buat. Berikut adalah contoh membuat middleware sederhana.
Plain Textvar express = require('express');
var app = express();
app.use(function(req, res) {
console.log('Contoh middleware untuk logging request');
next();
});Menggunakan template dan views
Template engine yang sering digunakan dengan Express adalah Pug. Pug dapat diinstall dengan menjalankan command berikut. npm install --save pug
Setelah menginstall Pug, kita dapat menambahkan kode berikut agar dapat menggunakannya.
Plain Textapp.set('view engine', 'pug');
app.set('views','./views');Setelah itu, kita membuat directory dengan nama views. Di dalamnya, kita membuat file bernama test.pug. Di dalam file tersebut, kita dapat menambahkan kode berikut.
Plain Textdoctype html
html
head
title = "Hello World"
body
p.greetings#people Hello World!Untuk merender template tersebut, kita dapat menambahkan kode berikut dalam app kita.
Plain Textapp.get('/test_template', function(req, res){
res.render('test');
});Sumber Bacaan
Jika anda yang masih penasaran dengan Express.js dan ingin mengetahui lebih lanjut mengenai framework tersebut. Berikut merupakan beberapa sumber bacaan serta tutorial bermanfaat untuk belajar Express.js
- Dea Afrizal: https://www.youtube.com/watch?v=LuY3f978a-A
- Web Programming Unpas: https://www.youtube.com/watch?v=TecGUz4bPFA