Node.js Ultimate Guide untuk Pemula — Part 1
This article has been translated into English version: Node.js Ultimate Guide for Beginner – Part 1
TL;DR
JavaScript saat ini menjadi salah satu bahasa pemrograman terpopuler, khususnya dalam membuat aplikasi berbasis web. JavaScript awalnya diperkenalkan pada tahun 1995 oleh Brendan Eich sebagai bahasa pemrograman yang dijalankan di browser Netscape Navigator. Pada saat itu, JavaScript hanya bisa dijalankan di client side atau front-end. Sedangkan aplikasi di server side atau back-end dibuat menggunakan bahasa pemrograman yang lain dan jauh lebih bervariasi, seperti Java, PHP, ASP.NET, dan masih banyak lagi. Sehingga mustahil untuk membuat sebuah full-stack web application hanya dengan menggunakan satu bahasa pemrograman saja. Dibutuhkan satu bahasa pemrograman khusus untuk server side dan JavaScript untuk client side.
Namun kehadiran Node.js pada tahun 2009 langsung mengubah semua hal tersebut. Dengan Node.js, seorang programmer bisa menggunakan JavaScript baik di client side maupun di server side. Ini tentunya sangat memudahkan proses development karena kita bisa fokus membuat aplikasi hanya dengan menggunakan JavaScript dan tidak perlu lagi belajar bahasa pemrograman yang lain.
Di artikel ini kita akan membahas secara singkat tentang Node.js, mulai dari apa itu Node.js, cara meng-install-nya di komputer masing-masing, hingga membuat program sederhana dan men-deploy program tersebut.
Apa itu Node.js
Node.js itu bukan bahasa pemrograman, tapi adalah sebuah runtime platform yang dibangun menggunakan V8 engine dari Google Chrome. Diluncurkan pertama kali oleh Ryan Dahl pada tahun 2009, Node.js langsung menciptakan revolusi bagi para programmer yang mana ini memungkinkan mereka untuk membuat aplikasi di luar browser cukup dengan menggunakan JavaScript di luar browser, khususnya di sisi server. Saat artikel ini dibuat, Node.js sudah memasuki versi 20.17.0 untuk yang LTS (Long Term Support) dan versi 22.9.0 dengan perkiraan sekitar 6.3 juta website di seluruh dunia yang menggunakan Node.js sebagai teknologinya.
Cara kerja Node.js sebenarnya cukup sederhana dan hampir sama dengan runtime platform lain seperti Apache dan Nginx. Ketika ada request yang masuk dari client ke server, maka Node.js akan meng-handle request tersebut dan mengirim response kepada client tersebut. Response yang diberikan bisa bermacam-macam, seperti HTML, JSON, atau file.
Cara Install Node.js
Ada banyak cara untuk meng-install Node.js. Salah satu cara yang dijelaskan secara resmi oleh Node.js ada di https://nodejs.org/en/download/package-manager.
Untuk mengetahui apakah Node.js sudah ter-install atau belum, kita bisa mengeceknya melalui terminal dengan memasukkan perintah berikut.
# verifies the right Node.js version is in the environment
node -v # should print `v20.17.0`
# verifies the right npm version is in the environment
npm -v # should print `10.8.2`
Yang perlu menjadi catatan adalah Node.js saat ini punya banyak sekali versi, tidak seperti bahasa pemrograman lain yang cenderung stabil dan jarak rilis antar versi barunya bisa sangat lama sekali. Sejak dirilis pada tahun 2009, Node.js sekarang sudah punya 22 versi mayor dengan rilisan baru setiap 6 bulan sekali.
Node.js Version | Codename | Release Date |
---|---|---|
v22.9.0 | - | 2024-09-17 |
v21.7.3 | - | 2024-04-10 |
v20.17.0 | Iron | 2024-08-21 |
v19.9.0 | - | 2023-04-10 |
v18.20.4 | Hydrogen | 2024-07-08 |
Bandingkan dengan PHP yang baru merilis versi baru setiap 1-2 tahun sekali.
PHP Version | Release Date |
---|---|
8.1 | 25 Nov 2021 |
8.2 | 8 Dec 2022 |
8.3 | 23 Nov 2023 |
Maka dari itu penggunaan version manager di Node.js menjadi hal yang sangat krusial. Tujuannya supaya saat kita tidak keliru ketika menggunakan versi Node.js dengan beberapa projek yang berbeda. Selain itu version manager di Node.js berguna untuk memastikan bahwa aplikasi yang kita buat menggunakan versi Node.js yang sama meski dijalankan di tempat yang berbeda-beda, misalnya di localhost kita, localhost milik orang lain, maupun di server tempat aplikasi Node.js tersebut di-deploy.
Sebenarnya ada banyak version manager di Node.js yang direkomendasikan begitu juga dengan tutorial cara menggunakannya, salah satu yang paling populer adalah Node Version Manager. Tapi untuk saat ini saya lebih menyarankan kepada teman-teman untuk menggunakan Volta dengan banyak sekali kelebihan dan kemudahan yang ditawarkan. Penjelasan lebih detil tentang hal tersebut bisa teman-teman cek pada artikel di bawah ini.
Volta: Cara Mengganti Versi Node.js yang Lebih Baik dari NVM
Hello World di Node.js
REPL (Read Evaluate Print Loop)
REPL adalah singkatan dari Read Evaluate Print Loop, dan merupakan programming language environment yang dijalankan pada terminal (console.log
) dan mengambil single expression sebagai input dan hasilnya dikembalikan lagi ke console.log
setelah eksekusi. REPL memudahkan kita untuk membuat kode JavaScript sederhana secara cepat tanpa harus membuat file apapun.
Untuk membuat Hello World di REPL Node.js, buka terminal lalu masukkan perintah berikut.
node
Lalu masukkan perintah console.log
dengan parameter berupa string 'Hello world'
seperti berikut.
console.log('Hello world');
Untuk keluar dari REPL, ketik Ctrl+C
.
File index.js
Jika pada mode REPL tadi perintah console.log
langsung dimasukkan ke dalam terminal, maka kita juga bisa membuat file baru dan mengeksekusinya menggunakan Node.js. Buat file baru dengan nama index.js
seperti berikut.
console.log('Hello world');
Lalu jalankan perintah berikut di terminal.
node index.js
Maka nanti di terminal akan muncul hasil sebagai berikut.
Karena nama dari file tersebut adalah index.js, maka kita bisa mengganti perintah
node index.js
dengannode .
. Ini karena Node.js secara otomatis akan memprioritaskan file bernamaindex
sebagai index file dari folder tersebut.
REST API Sederhana
Bentuk paling simpel untuk membuat REST API di Node.js adalah dengan menggunakan HTTP API. Caranya dengan membuat file JavaScript baru seperti di bawah ini.
const http = require('http');
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello, World!\n');
});
server.listen(3000, '127.0.0.1', () => {
console.log('Server berjalan di http://127.0.0.1:3000/');
});
Untuk menjalankan kode tersebut di Node.js, masuk ke terminal dan ketik perintah berikut.
node index.js
Maka nanti di terminal akan muncul hasil sebagai berikut.
Sekarang teman-teman bisa mengecek API endpoint tersebut melalui browser atau API platform lain seperti Postman, Insomnia, dan lain-lain.
Karena hampir seluruh API di Node.js bersifat non-blocking termasuk HTTP API tadi, artinya perintah node index.js
akan terus berjalan selama terminal tersebut tidak distop. Untuk membuat terminal tadi berhenti, cukup ketika Ctrl+C
di terminal.
Node.js Runtime
Sebagai sebuah runtime, Node.js dibuat supaya kode JavaScript bisa berjalan di server. Sehingga hampir semua global function dari JavaScript yang selama ini kita jalankan di browser otomatis bisa dijalankan juga melalui Node.js. Salah satunya adalah console
, global
(versi lain dari window
di browser), dan masih banyak lagi. Tapi selain itu Node.js juga punya beberapa global function tersendiri yang aslinya tidak tersedia di browser, contohnya seperti:
process
Process API menyediakan fungsi untuk mendapatkan data dari proses Node.js yang sedang berjalan. Contohnya seperti process.platform
untuk mendapatkan informasi sistem operasi yang sedang berjalan (Linux, Windows, macOS, dan lain-lain). Atau process.env
yang digunakan untuk mengambil konfigurasi environment variables dari sistem operasi. Dan masih banyak lagi kegunaan Process API yang lainnya.
crypto
Crypto API menyediakan fungsi untuk melakukan beberapa kriptografi seperti hash, cipher, decipher, sign, dan verify OpenSSL.
const { createHmac } = require('node:crypto');
const secret = 'abcdefg';
const hash = createHmac('sha256', secret)
.update('I love cupcakes')
.digest('hex');
console.log(hash);
// Prints:
// c0fa1bc00531bd78ef38c628449c5102aeabd49b5dc3a2a516ea6ea959d6658e
Text Editor
Setelah mencoba membuat hello world
, langkah selanjutnya adalah memastikan bahwa text editor yang kita pakai untuk membuat aplikasi dengan Node.js sudah dikonfigurasi dengan baik. Baik dari ekstensi apa saja yang perlu dipakai untuk mendukung proses development dan setting-an yang perlu disiapkan.
Kenapa Menggunakan VSCode?
Sebagai sebuah code editor, VSCode kini menjadi salah satu pilihan yang paling populer dan kompatibel di semua sistem operasi. Beberapa fitur unggulan dari VSCode misalnya seperti:
- Ringan dan cepat: Tidak membebani sistem namun tetap powerful.
- Ekosistem ekstensif: Mendukung banyak ekstensi untuk hampir semua bahasa pemrograman.
- Fitur bawaan hebat: Terminal terintegrasi, Git support, IntelliSense, dan debugging.
- Gratis dan open-source: Bebas biaya dengan komunitas aktif yang terus meningkatkan fungsionalitasnya.
- Cross-platform: Bisa digunakan di Windows, macOS, dan Linux.
Ekstensi yang Digunakan di VSCode
Berikut ini beberapa ekstensi yang saya gunakan di VSCode untuk mendukung proses development di Node.js.
Konfigurasi VSCode
Untuk memastikan bahwa konfigurasi VSCode bisa diakses secara konsisten di berbagai tempat, saya merekomendasikan kepada teman-teman untuk menyimpan semua konfigurasi tersebut di dalam folder .vscode
pada projek tersebut. Sebagai contoh, saya akan membuat sebuah folder baru dan membukanya di VSCode.
Yang perlu diperhatikan di folder ini adalah ada dua file di folder .vscode
, yaitu extensions.json
dan settings.json
. Kedua file ini memegang peranan penting untuk menyimpan seluruh konfigurasi VSCode kita secara khusus per projek dan meng-commit konfigurasi tersebut ke version control yang ada seperti Git dan semacamnya.
Konfigurasi Ekstensi di VSCode
Untuk memastikan setiap developer yang memiliki projek kita punya ekstensi yang sama, kita bisa menambahkan ekstensi tersebut di extensions.json
dengan contoh sebagai berikut.
Di sini ada dua properti yang bisa kita manfaatkan, yaitu recommendations
dan unwantedRecommendations
. Sesuai dengan namanya, recommendations
kita isi dengan daftar ekstensi yang kita rekomendasikan kepada developer lain yang memiliki projek kita, sedangkan unwantedRecommendations
untuk daftar ekstensi yang tidak direkomendasikan. Nantinya ketika projek ini dibuka oleh developer lain dan ternyata ada ekstensi dalam daftar recommendations
yang belum di-install oleh developer tersebut, maka VSCode akan mengeluarkan peringatan seperti ini.
Maka developer tersebut tinggal mengikuti saran dari VSCode dengan mengklik Install dan VSCode akan otomatis meng-install ekstensi tersebut.
Untuk menambahkan daftar ekstensi ke dalam extensions.json
, kita cukup pergi ke halaman Extensions di VSCode, mencari ekstensi yang dimaksud, dan menyalin Extension ID-nya ke dalam recommendations
pada extensions.json.
Konfigurasi Formatter di VSCode
Selain menambahkan daftar ekstensi di extensions.json
, kita juga harus menyimpan konfigurasi lainnya pada file settings.json
di folder .vscode
seperti pada contoh di bawah ini.
Beberapa konfigurasi penting yang bisa jadikan referensi di antaranya adalah editor.formatOnSave
yang berfungsi untuk menjalankan formatter secara otomatis ketika file tersebut di-save. Konfigurasi ini hanya bisa berjalan apabila kita sudah mengatur default formatter yang digunakan di editor.defaultFormatter
. Ada banyak formatter di VSCode yang bisa teman-teman gunakan, tapi di sini saya merekomendasikan Prettier - Code formatter sebagai default formatter di VSCode.
Selain menggunakan Prettier, kita bisa menambahkan konfigurasi tambahan menggunakan editorconfig. Beberapa konfigurasi spesifik yang bisa ditangani oleh editorconfig yaitu seperti:
indent_style
(menggunakan space atau tab).trim_trailing_whitespace
untuk menghilangkan whitespace character yang tidak perlu.insert_final_newline
untuk memastikan setiap file memiliki satu newline kosong di akhir baris.- dan masih banyak lagi.
Penutup
Di part selanjutnya, kita akan mempelajari bagaimana cara kerja dari Node.js, terutama mengenai konsep callback, Promise
, dan async
serta await
di JavaScript dan bagaimana implementasinya di Node.js. Jika ada topik lain yang ingin dibahas, silakan tulis pendapatmu di kolom komentar. Terima kasih!