Node.js Ultimate Guide untuk Pemula — Part 1

Serial - Node.js Ultimate Guide untuk Pemula

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.

Cara meng-install Node.js di macOS menggunakan nvm.
Cara meng-install Node.js di macOS menggunakan nvm.

Untuk mengetahui apakah Node.js sudah ter-install atau belum, kita bisa mengeceknya melalui terminal dengan memasukkan perintah berikut.

bash

# 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`
Contoh cara mengecek Node.js dan npm version di terminal.
Contoh cara mengecek Node.js dan npm version di terminal.

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.

Release schedule dari Node.js per September 2024
Release schedule dari Node.js per September 2024
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 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.

bash

node

Lalu masukkan perintah console.log dengan parameter berupa string 'Hello world' seperti berikut.

bash

console.log('Hello world');
Contoh hasil output REPL Node.js di terminal.
Contoh hasil output REPL Node.js di terminal.

Untuk keluar dari REPL, ketik Ctrl+C.

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.

index.js

console.log('Hello world');

Lalu jalankan perintah berikut di terminal.

bash

 node index.js

Maka nanti di terminal akan muncul hasil sebagai berikut.

Contoh hasil output file index.js di terminal.
Contoh hasil output file index.js di terminal.

Karena nama dari file tersebut adalah index.js, maka kita bisa mengganti perintah node index.js dengan node .. Ini karena Node.js secara otomatis akan memprioritaskan file bernama index sebagai index file dari folder tersebut.

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.

index.js

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.

bash

 node index.js

Maka nanti di terminal akan muncul hasil sebagai berikut.

Contoh hasil output REST API dengan Node.js di terminal.
Contoh hasil output REST API dengan Node.js di terminal.

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 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 API menyediakan fungsi untuk melakukan beberapa kriptografi seperti hash, cipher, decipher, sign, dan verify OpenSSL.

Contoh membuat HMAC di Node.js menggunakan algoritma sha256.

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.

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.

Berikut ini beberapa ekstensi yang saya gunakan di VSCode untuk mendukung proses development di Node.js.

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.

Contoh projek baru di VSCode.
Contoh projek baru 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.

Untuk memastikan setiap developer yang memiliki projek kita punya ekstensi yang sama, kita bisa menambahkan ekstensi tersebut di extensions.json dengan contoh sebagai berikut.

Contoh konfigurasi ekstensi di VSCode.
Contoh konfigurasi ekstensi di VSCode.

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.

VSCode akan memunculkan warning apabila ada ekstensi di dalam extensions.json yang belum kita instal.
VSCode akan memunculkan warning apabila ada ekstensi di dalam extensions.json yang belum kita instal.

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.

Ekstensi Github Actions di VSCode. Salin Extension ID dengan mengklik Copy Extension ID seperti pada contoh di gambar.
Ekstensi Github Actions di VSCode. Salin Extension ID dengan mengklik Copy Extension ID seperti pada contoh di gambar.

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.

Contoh konfigurasi settings.json di VSCode.
Contoh konfigurasi settings.json di VSCode.

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.
Contoh konfigurasi .editorconfig di VSCode.
Contoh konfigurasi .editorconfig di VSCode.

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!


Sumber

Konten Terkait