Node.js adalah software open-source yang bisa digunakan untuk membuat aplikasi jaringan dan aplikasi server-side yang real-time dan scalable (bisa dikembangkan sesuai kebutuhan).
Pada dasarnya, Node.js adalah runtime environment lintas platform single-thread yang dibangun berdasarkan engine JavaScript V8 Chrome. Pembuatan aplikasi dengan Node JS dilakukan melalui virtual private server.
Runtime ini menawarkan operasi input/output (I/O) non-blocking, serta dibangun dengan arsitektur asinkron dan event-driven untuk membantu developer membuat berbagai project dengan mudah dan efisien.
Cara Kerja Node.js
Dibandingkan dengan platform lain, Node.js memiliki alur kerja yang spesifik. Software ini beroperasi dalam satu thread (single-threaded), yang berarti tidak membuat thread baru untuk setiap permintaan. Thread adalah rangkaian instruksi yang perlu dilakukan oleh server.
Node.js menggunakan operasi I/O non-blocking. Artinya, saat client mengirim permintaan ke web server, event loop single-threaded Node JS akan mengambil permintaan tersebut lalu mengirimkannya ke worker thread untuk diproses.
Daripada memblokir thread dan membuang-buang resource CPU dengan menunggu respons, Node JS akan terus mengerjakan tugas berikutnya. Dengan cara ini, Node.js bisa menangani sejumlah besar permintaan secara bersamaan.
Oleh karena itu, Node.js tidak cocok untuk tugas-tugas dengan penggunaan CPU yang tinggi. Sebab, tugas tersebut bisa menghalangi thread utama untuk menangani permintaan lain, yang secara efektif akan memblokirnya.
Arsitektur yang Asinkron
Jadi, seperti pembahasan di atas tadi, thread Node.js tidak menunggu sampai respons diterima untuk lanjut memproses permintaan berikutnya.
Pada arsitekturnya yang asinkron, event loop beroperasi setiap kali peristiwa tertentu terjadi (event-driven). Setelah diterima dari panggilan API sebelumnya, respons akan dimasukkan ke dalam antrean event.
Event loop akan menyelesaikan semua permintaan sebelumnya dan permintaan saat ini sebelum menjalankan fungsi callback untuk mengirimkan respons dari server ke klien.
Karena menggunakan event loop single-thread, Node.js mampu menangani banyak permintaan secara bersamaan dengan waktu eksekusi yang lebih cepat, dan menggunakan resource yang lebih sedikit.
Sebagai perbandingan, software arsitektur sinkron melakukan satu tugas pada satu waktu. Oleh karena itu, event loop biasanya hanya akan pindah ke tugas berikutnya kalau yang sebelumnya sudah selesai.
Fungsi Node.js
Node.js adalah solusi yang cocok untuk melakukan tugas dengan penggunaan data yang intens atau analitik waktu nyata karena memiliki arsitektur asinkron dan fitur I/O non-blocking. Umumnya, Node.js sering digunakan untuk tugas-tugas berikut:
- Chatting secara real-time. Karena menangani tugas I/O secara efektif, Node.js bisa digunakan untuk program yang menggunakan data secara intensif, seperti aplikasi chat. Node JS juga menggunakan teknologi push melalui web socket, yang memungkinkan komunikasi dua arah antara server dan client. Hasilnya, server tidak perlu mengelola thread satu per satu untuk setiap koneksi terbuka berkat arsitektur asinkron single-threaded dari Node.js.
- Data streaming. Node.js memiliki modul bawaan yang mendukung streaming data. Ini memungkinkan pembuatan stream yang bisa dibaca (readable) dan ditulis (writeable). Node.js akan membantu mengantrekan data dan mendistribusikannya secara asinkron tanpa hambatan atau gangguan. Jadi, Node JS adalah pilihan bagus untuk fitur streaming yang bisa memproses file saat sedang diupload.
- Proxy sisi server. Node JS bisa mengelola banyak sekali koneksi serentak menggunakan metode non-blocking. Software ini bisa digunakan sebagai proxy server-side yang efektif, yang mengumpulkan data dari berbagai resource pihak ketiga. Terkadang, Node.js digunakan dalam pembuatan aplikasi client-side untuk mengelola aset dan permintaan API proxy/stub.
- Dashboard untuk memantau sistem. Dengan fitur event loop Node.js, Anda bisa membuat dashboard berbasis web untuk mengecek status beberapa layanan secara asinkron. Status layanan internal dan publik bisa dilaporkan secara langsung.
- REST API. Node.js juga memiliki sejumlah package seperti Express.js dan Koa.js yang bisa digunakan untuk membuat aplikasi. Semua ini bisa mempercepat proses integrasi API dan menjadi dasar untuk REST API yang ringan dan cepat.
- Single Page Application (SPA). Seluruh SPA akan dimuat pada satu halaman untuk memberikan pengalaman yang serupa dengan desktop. Karena bisa menangani panggilan asinkron secara efisien di antara operasi I/O yang berat, Node JS memungkinkan update data yang sangat lancar bagi SPA tanpa harus merefresh halaman secara rutin.
Lebih kerennya lagi, Node.js juga mendukung pengembangan front-end dan back-end. Berikut alasan Node.js bisa digunakan untuk keduanya:
- Kode yang bisa digunakan kembali. Beberapa komponen Node.js bisa digunakan kembali untuk back-end dan front-end.
- Efisiensi tinggi. Menggunakan Node.js bisa mengurangi perpindahan konteks antara beberapa bahasa pemrograman.
Apakah Node.js adalah Bahasa Pemrograman?
Nah, Node.js dan JavaScript adalah hal yang berbeda. Kalau JavaScript merupakan bahasa pemrograman yang dieksekusi di sisi klien (browser pengguna), Node JS adalah environment yang berjalan di sisi server untuk menjalankan kode JavaScript. Jadi bisa disimpulkan, kalau Node.js bukanlah bahasa pemrograman, walaupun masih berhubungan erat dengan kode JavaScript.
Node.js vs npm
Node.js adalah runtime environment JavaScript, sedangkan nmp adalah bagian besar dari ekosistem Node.js.
Node Package Manager atau npm merupakan pengelola package yang memungkinkan komunitas user JavaScript dan Node.js memublikasikan serta membagikan modul node miliknya dengan orang lain. Jadi, proses pengembangan aplikasi bisa lebih cepat dan efisien.
npm sendiri terdiri dari dua bagian:
- Tool antarmuka baris perintah (CLI) untuk mendownload dan memublikasikan package.
- Repositori online yang menyimpan package JavaScript dan Node.js.
npm menampung jutaan package yang bisa didownload dan diatur dalam berbagai kategori. Bisa dibilang, npm adalah registry software terbesar di dunia. Seluruh library modul yang dikemas dalam package bisa ditemukan di website resminya.
Secara default, npm sudah disertakan dengan setiap instalasi Node JS. Anda hanya perlu mendownload package di website resmi untuk menggunakannya.
Cara Install Node.js
Windows
Ikuti petunjuk install Node.js berikut kalau Anda menggunakan Windows:
- Download installer Node.js langsung dari website resminya.
- Klik dua kali file yang didownload, dan jendela Node.js Setup akan terbuka. Klik Next.
- Baca EULA program dan centang I accept the terms in the License Agreement. Klik Next lagi.
- Pilih folder tujuan, lalu klik Next.
- Pilih fitur yang akan diinstal. Kalau tidak yakin, biarkan nilai defaultnya. Klik Next.
- Di halaman berikutnya, centang Automatically install the necessary tools. Klik Next, lalu Install. Mungkin akan muncul prompt yang menanyakan apakah Anda mengizinkan program Setup melakukan perubahan pada PC Anda. Pilih Yes kalau bersedia.
- Setelah penginstalan default selesai, Command Prompt akan terbuka dan menampilkan setting tambahan. Tekan dua kali tombol apa pun untuk melanjutkan.
- Setelah proses selesai, Command Prompt akan meminta Anda menekan Enter untuk menutup jendela.
- Untuk memverifikasi versi Node.js, buka Command Prompt dan jalankan command berikut:
node -v
npm -v
macOS
Berikut cara menginstal Node.js di perangkat macOS:
- Download versi terbaru Node.js installer dari website resminya.
- Klik dua kali file yang didownload, dan jendela Install Node.js akan terbuka. Klik Continue.
- Baca Software License Agreement (Perjanjian Lisensi Perangkat Lunak) dan pilih Continue.
- Pilih folder tujuan, lalu klik Continue.
- Tinjau tipe penginstalan dan klik Install.
- Proses install akan dimulai.
- Node.js dan NPM akan tersedia setelah proses install selesai. Klik Close untuk menyelesaikan penginstalan.
- Selanjutnya, klik ikon Launchpad di dock dan buka Terminal.
- Verifikasi penginstalan Node.js dan NPM dengan mengetikkan command berikut:
node -v
npm -v
Linux
Ikuti langkah-langkah berikut untuk menginstal Node.js di Linux.
- Klik tombol Show Applications dan buka Terminal.
- Jalankan command berikut untuk menginstall Node.js:
sudo apt install nodejs
- Setelah penginstalan di perangkat Linux selesai, Anda harus menginstal NPM juga.
sudo apt install npm
- Selanjutnya, verifikasi versi Node.js dengan menjalankan command berikut:
nodejs -v
npm -v