Membuat aplikasi node.js di tahun 2026 sudah berbeda dengan tahun-tahun sebelumnya, berbagai framework dan runtime javascript tersedia secara open source. Ratusan library dan framework beri kebebasan bagi developer node.js untuk meracik projek.
Aku mengikuti perkembangan pemrograman javascript sejak 2020. Banyaknya library, framework bahkan runtime yang tersedia saat ini kadang membuat overwhelm saat baru memulai projek.
Selain itu, perlu memahami technical dept dari masing-masing alat yang digunakan. Kali ini aku akan jelaskan beberapa panduan untuk memulai projek baru menggunakan Bahasa Javascript.
Program CLI atau web server?
CLI (Command Line Interface) adalah program kecil untuk menyelesaikan tugas kecil yang spesifik. Misalnya mengecilkan foto, mengganti nama file, mengubah format, bahkan menjalankan server. Akses program ini menggunakan perintah CLI di terminal atau command prompt.
Web Server adalah program untuk menerima dan menjalankan perintah menggunakan protokol HTTP. Akses program ini menggunakan browser, CURL, atau aplikasi HTTP lainnya.
Membuat program CLI membutuhkan library berikut untuk membantu pekerjaan
Sedangkan membuat web server, dibutuhkan pengetahuan tentang protokol HTTP untuk menerima dan memberikan respon. Library yang dapat membantu pembuatan web server adalah
- Express: Library untuk membuat web server protokol HTTP.
- Hono: Web Framework modern berbahasa Typescript.
Selain library terdapat juga framework yang memiliki berbagai alat yang membantu pembuatan web server
Pilihan Arsitektur
Pada umumnya arsitektur program memiliki komponen Penyimpanan Data dan Akses Data. Penyimpanan data disebut Database, Akses data disebut Application.
MVC (Model-View-Controller)
Application ditampilkan menggunakan bahasa HTML dan Javascript. MVC terdiri dari Model sebagai model dari data dan berhubungan langsung ke database, View untuk membuat tampilan dan controller yang mengarahkan model dan view tersebut.
MVC sangat mudah dan simpel digunakan. Kamu bisa gunakan Library manapun tetapi biasanya tidak menyediakan struktur folder untuk memulai projek. Walaupun begitu, kamu memiliki kontrol terhadap seluruh proses dan bagian dari program.
Untuk membuat View—tampilan website—, kamu mungkin perlu menggunakan template engine seperti
- Handlebars—Minimal template engine for steroids
- Eta—Lightweight and blazing fast template engine
Masing-masing template engine memiliki syntax—penulisan kode— yang berbeda-beda, pastikan membaca dokumentasi terlebih dahulu. Template engine berfokus pada pembuatan HTML, CSS dan Javascript.
Framework modern yang telah memiliki frontend dan backend tetapi juga bisa generate halaman mirip dengan MVC adalah
- Next.js — Mampu membuat halaman dengan framework React.js
- Nuxt — Framework fullstack menggunakan Vue.js
Framework diatas lebih modern dan mungkin lebih ramah bagi programmer pemula karena dokumentasi lengkap, Opinionated, dan dukungan komunitas.
Untuk membuat model—konsep abstraksi database ke dalam kode— dapat menggunakan library ORM (Object Relational Model) seperti
- Knex.js
- Sequelize
- MikroORM
- TypeORM
- Prisma
Menggunakan konsep MVC sangat sederhana dan simpel secara arsitektur karena Model Data dan view sangat terikat sehingga disebut dengan coupled. Sederhana dan cepat untuk di memulai projek, tetapi saat projek sudah semakin besar, akan sulit dikelola karena saling terikat dan kode duplikat.
Setiap controller digunakan untuk satu tampilan, dan satu tampilan hanya memiliki satu tugas yang besar. Beberapa bagian halaman lain mungkin memiliki fungsi yang hampir mirip maka MVC mengharuskan developer duplikasi kode atau membuat logika bisnis di dalam model.
👉 MVC cocok untuk kamu yang membuat 1 halaman untuk 1 data seperti blog, berita, website publik. Tidak disarankan untuk aplikasi interaktif.
Backend-Frontend
Backend atau bagian belakang adalah area yang mengatur komunikasi ke database dan mengolah data. Sedangkan Frontend adalah program javascript mengatur tampilan berdasarkan state.
Berbeda dengan MVC, pemisahan tugas kode view sebagai Frontend dan Backend sebagai controller sekaligus pengolahan logika bisnis. Kode menjadi lebih efektif karena frontend memiliki berbagai komponen yang bisa digunakan dan Backend bersifat RESTful API yang dapat digunakan dibeberapa tempat sekaligus.
Library backend bisa menggunakan Express, hono, hapi atau library lainnya. Backend biasanya menggunakan arsitektur RESTful API (Representational State Transfer Application Programming Interface), memiliki konsep CRUD (Create, Read, Update, Delete) terhadap model.
Metode RESTful API menjadikan controller sebagai gerbang akses terhadap data, bukan sebagai pengatur tampilan website semata—yang mana MVC lakukan.
Frontend bertugas untuk menampilkan halaman berdasarkan kondisi (state) dari aplikasi, logika bisnis biasanya diolah dan ditampilkan di frontend. Library Frontend dapat gunakan
- Vuejs—Framework frontend dibuat oleh komunitas open source
- Reactjs—Framework frontend dibuat oleh Facebook
Masing-masing library frontend menggunakan syntax yang berbeda dan lifecycle yang berbeda pula. Sangat disarankan untuk membaca masing-masing dokumentasi.
Cara ini memiliki kekurangan yaitu website sulit kembangkan SEO. Frontend pada umumnya tidak memiliki informasi apapun di kode HTML sedangkan Search Engine membaca itu. Maka cara ini cocok untuk membuat aplikasi internal, responsif, dan interaktif.
👉 Frontend-Backend cocok untuk aplikasi penuh interaktsi seperti aplikasi internal, website dashboard. Tidak cocok untuk website seperti blog atau berita yang membutuhkan SEO.
Opinionated vs Unopinionated
Berdasarkan diskusi stackexchange, Opinionated adalah sebuah label dari framework yang memberikan cara terbaik untuk menyelesaikan tugas, sedangkan unopinionated tidak memberikan panduan cara terbaik dan membebaskan pengguna dari caranya masing-masing.
Walaupun opinionated memberikan cara terbaik, tercepat dan termudah untuk menyelesaikan sesuatu, malah kadang sulit melakukan sesuatu di luar metode yang sudah ada.
Contoh Framework opinionated adalah:
- Nestjs: Framework Node.js Berfokus pada pembuatan Backend
- Next.js: Framework Fullstack menggunakan React.js
- Nuxt: Framework Fullstack menggunakan vue.js
Framework unopinionated adalah express, hapi, fastify, hono. Walaupun membutuhkan waktu dan tenaga di awal pengembangan, tetapi memberikan kontrol terhadap setiap bagian program sehingga pengembang aplikasi bisa memberikan tingkat keamanan yang sesuai.
Opinonated mungkin tampak cepat dalam pengembangan tetapi tidak punya kendali terhadap internal dari framework, sehingga menggantungkan harapan pada framework tersebut aman selamanya. Kamu harus selalu pantau status keamanan framework agar aman dari ancaman hacker.
👉 Pilih Opinionated untuk tim yang besar dan membutuhkan onboarding yang cepat karena dokumentasi telah tersedia oleh komunitas.
👉 Pilih Unopinionated apabila membutuhkan program yang cepat, terkontrol, mementingkan kecepatan dan keamanan.
Self-hosting atau Edge-Computing?
Deploy program ke Self-hosting memerlukan keahlian teknis tentang sistem operasi seperti linux, ubuntu, windows. Selain itu perlu memahami konsep jaringan dan keamanan. Walau cara ini terlihat sulit, tapi memberikan kebebasan, kontrol dan tidak terikat pada satu vendor.
Edge-Computing adalah server yang hanya jalan saat digunakan saja bahkan bisa duplikasi di berbagai lokasi di dunia tergantung vendor yang digunakan. Selain itu, tidak memerlukan kemampuan manajemen server. Biaya hanya dihitung saat proses dilakukan saja.
Contoh vendor edge server adalah
- Vercel
- Cloudflare Workers
- AWS Lambda
- Google Cloud run
- Deno
Pada umumnya edge-computing mendukung node.js, tetapi memerlukan adaptasi framework untuk pilihan vendor edge-computing. Framework yang telah mendukung edge-computing adalah
- Next — Framework Fullstack React.js
- Nuxt — Framework Fullstack Vue.js
- Hono — Web Framework yang ringan dan cepat.
Sedangkan untuk self-hosting, memiliki kebebasan karena bisa install program apapun sehingga tidak ada batasan framework.
👉 Pilih self-hosting apabila memiliki kemampuan teknikal server atau sewa administrator server.
👉 Pilih edge-computing apabila manfaatnya sangat mendukung keputusan bisnis.
CommonJS atau EcmaScript
CommonJS adalah bentuk javascript saat pertama kali dikembangkan dan didukung oleh semua browser dan runtime. Sedangkan Ecmascript (ESM) memiliki bentuk yang berbeda khususnya dalam menggunakan module.
Perbedaan paling mencolok adalah commonjs menggunakan module dan require sedangkan Ecmascript menggunakan export dan import
// CommonJS
// math.cjs
module.exports = (a, b) => a + b;
// app.cjs
const tambah = require('./math.cjs');
tambah(1, 2);
// ESM
// math.js
export default (a, b) => a + b;
// app.js
import tambah from './math.js';
tambah(1, 2);
Kenapa jadi bahan pertimbangan? Karena keduanya tidak bisa dicampur, harus menggunakan salah satu mode.
Saat membuat projek, pastikan library yang kamu gunakan menggunakan mode modul yang sama. Jika tidak, maka kamu harus menggunakan bundle.
Bundle adalah proses menggabungkan berbagai kode, file dan berbagai data menjadi output yang dinginkan. Library bundling adalah
- Webpack — Bundler asset, javascript, extandable
- Rollup — Bundler untuk web, program, dan lain-lain.
- esbuild — Bundler 10-100x lebih cepat dibanding yang lain.
- tsup — Bundler untuk js, mjs, cjs, json, ts, tsx. CSS masing experimental.
- parcel — Bundler js, css, asset, svg, dan lain-lain minim konfigurasi.
Jika kamu menggunakan Opinionated framework, tidak perlu khawatirkan ini karena sudah terdapat proses bundling didalamnya. Tetapi jika menggunakan unopinionanted maka kamu harus mengatur bundle kamu sendiri.
👉 Jika membuat projek baru, gunakan Ecmascript dari awal pengembangan. Tetapi jika projek legacy CommonJS, lanjutkan sesuai kebijakan perusahaan.
Pilihan Runtime
Runtime adalah program yang digunakan untuk membaca, mengolah, mengatur memory hingga CPU dari kode berbahasa Javascript atau typescript.
Pilihan runtime saat ini sudah bervariasi dengan berbagai kelebihan yang ditawarkan.
- Node.js: Runtime javascript sejak 2016
- Deno: Runtime Javascript/Typescript, menyediakan edge-computing
- Bun: Runtime Javacript/Typescript yang dibuat oleh komunitas
Pilihan runtime juga akan mempengaruhi pilihan library atau framework. Tidak semua framework berjalan mulus pada runtime pilihan, tetapi node.js memiliki popularitas sebagai runtime program javascript.
Beberapa projek yang telah menggunakan salah satu runtime akan sulit untuk pindah ke runtime lainnya tanpa migrasi besar-besaran pada projek tersebut. Penggunaan library yang tersedia dan stabil akan sulit karena mungkin tidak mendukung runtime pilihan. Jadi, harus lebih rajin untuk membuat kode atau library yang dibutuhkan.
👉 Pastikan membaca dokumentasi Runtime dan library yang akan digunakan, jangan sampai menghambat pengerjaan karena keterbatasan support runtime.
Kesimpulan
Pembuatan program menggunakan javascript didukung oleh komunitas yang luas dan beragam. Pilihan berbagai alat dapat digunakan kadang memberikan kebebasan tapi kadang jadi overwhelm karena terlalu banyak. Kombinasi stack teknologi yang digunakan hanya mempermudah pekerjaan, fokuslah pada solusi yang dikembangkan.
Kesalahan banyak programmer adalah terlalu menggantungkan keputusan kepada pendapat internet dan trend internet tanpa pemahaman mendalam sehingga membuat program yang banyak celah keamanan, dan sulit dikembangkan. Membuat program tidak hanya tentang kode, masalah dan solusi tetapi juga tentang keberlanjutan, keamanan, lingkungan dan dukungan kemanusiaan.
Semoga artikel ini membantu kamu dalam membuat projek javascript di tahun 2026 dengan efektif dan efisien. Terima kasih dan sampai jumpa.