
Node.js adalah runtime JavaScript. Apa artinya ini, dan bagaimana cara kerjanya?
Lingkungan Node.js mencakup semua yang Anda butuhkan untuk menjalankan program yang ditulis dalam JavaScript.

Sebelumnya, Anda hanya dapat menjalankan JavaScript di peramban, tetapi begitu pengembang mengembangkannya, dan sekarang Anda dapat menjalankan JS di komputer sebagai aplikasi mandiri. Jadi ada Node.js.
Sekarang Anda dapat melakukan lebih banyak hal dengan JavaScript daripada hanya situs web interaktif.
JavaScript sekarang memiliki kemampuan untuk melakukan apa yang dapat dilakukan oleh bahasa pemrograman scripting lainnya, seperti Python.
JavaScript dan Node.js berbasis browser berjalan di runtime V8. Mesin ini menggunakan kode JS Anda, dan mengubahnya menjadi kode mesin yang lebih cepat. Kode mesin adalah kode tingkat rendah yang dapat dijalankan komputer tanpa harus menafsirkannya terlebih dahulu.
Mengapa Node.js?
Berikut adalah definisi formal yang diberikan pada situs web Node.js resmi:
- Node.js - runtime JavaScript berdasarkan mesin JavaScript V8 dari Chrome.
- Node.js menggunakan model I / O non-pemblokiran-acara yang membuatnya mudah dan efisien.
- Ekosistem paket Node.js, npm, adalah ekosistem pustaka sumber terbuka terbesar di dunia.
Kami sudah membahas baris pertama dari definisi ini: "Node.js adalah runtime JavaScript berdasarkan mesin JavaScript V8 dari Chrome." Sekarang mari kita lihat dua baris lainnya, sehingga kita bisa mengerti mengapa Node.js sangat populer.
I / O adalah singkatan dari input / output. Itu bisa apa saja: dari membaca / menulis file lokal ke permintaan HTTP di API. I / O membutuhkan waktu dan karenanya memblokir fungsi lain.
Pertimbangkan sebuah skenario di mana kami meminta user1 dan user2 dari backend, dan kemudian cetak di layar / di konsol. Respons terhadap permintaan ini membutuhkan waktu, tetapi kedua permintaan data pengguna dapat dieksekusi secara independen dan pada saat yang sama.

Memblokir input-output
Dalam metode kunci, permintaan data pengguna2 tidak dipicu sampai data pengguna1 dicetak di layar.
Jika itu adalah server web, kami perlu memulai utas baru untuk setiap pengguna baru. Tetapi JavaScript adalah single-threaded (tetapi memiliki loop acara single-threaded, yang akan kita bicarakan sedikit kemudian). Dengan demikian, ini akan membuat JavaScript tidak cocok untuk tugas multi-utas.
I / O Non-Blok
Di sisi lain, dengan menggunakan permintaan non-pemblokiran, Anda dapat memulai permintaan data untuk pengguna2 tanpa menunggu jawaban atas permintaan pengguna1. Anda dapat memulai kedua permintaan secara paralel.
Non-blocking I / O menghilangkan kebutuhan untuk multithreading karena server dapat menangani beberapa permintaan sekaligus.
Loop acara JavaScript
Jika Anda memiliki 26 menit, lihat penjelasan video Node Event Loop yang luar biasa:
Jika tidak, berikut adalah penjelasan langkah demi langkah tentang cara kerja Loop Acara di JavaScript:

1. Kirim main () ke tumpukan panggilan.
2. Kirim console.log () ke tumpukan panggilan. Dimulai segera dan muncul.
3. Kirim setTimeout (2000) ke tumpukan. setTimeout (2000) adalah Node API. Ketika kami menyebutnya, kami mendaftarkan pasangan acara callback. Acara akan menunggu 2.000 milidetik, dan kemudian memanggil panggilan balik.
4. Setelah pendaftaran, setTimeout (2000) muncul di tumpukan panggilan.
5. Sekarang setTimeout kedua (0) terdaftar dengan cara yang sama. Kami sekarang memiliki dua Node API yang menunggu eksekusi.
6. Setelah menunggu 0 detik, setTimeout (0) pindah ke antrean panggilan balik, dan hal yang sama terjadi dengan setTimeout (2000).
7. Dalam antrian eksekusi panggilan balik, fungsi menunggu tumpukan panggilan menjadi kosong, karena hanya satu fungsi yang dapat dieksekusi sekaligus. Ini memberikan loop acara.
8. Konsol.log () terakhir dipanggil, dan main () dipanggil dari tumpukan panggilan.
9. Loop acara melihat bahwa tumpukan panggilan kosong, tetapi antrian panggilan balik tidak. Dengan demikian, ini memindahkan callback (dalam urutan) ke tumpukan panggilan untuk dieksekusi.
Npm

Ini adalah perpustakaan yang dibangun komunitas. Mereka akan memecahkan masalah yang paling umum. npm (Node Package Manager) berisi paket yang dapat Anda gunakan dalam aplikasi Anda untuk membuat pengembangan Anda lebih cepat dan lebih efisien.
Membutuhkan
Wajib memiliki tiga fungsi:
Memuat modul yang disertakan dengan Node.js, misalnya, dari sistem file atau HTTP, dari Node.js API.
Memuat pustaka pihak ketiga seperti Express dan Mongoose yang Anda instal dari npm.
Memungkinkan Anda membuat file Anda sendiri dan membagi proyek menjadi beberapa modul.
Membutuhkan adalah fungsi, dan dibutuhkan parameter path dan mengembalikan module.exports.
Modul simpul
Modul Node adalah blok kode yang dapat digunakan kembali yang keberadaannya tidak secara sengaja memengaruhi kode lain.
Anda dapat menulis modul Anda sendiri dan menggunakannya dalam berbagai aplikasi. Node.js memiliki satu set modul built-in yang dapat Anda gunakan tanpa instalasi khusus.
V8 mempercepat JavaScript menggunakan C ++
V8 adalah mesin open source yang ditulis dalam C ++.
JavaScript -> V8 (C ++) -> kode mesin
V8 mengimplementasikan ECMAScript seperti yang ditentukan dalam ECMA-262. ECMAScript dibuat oleh Ecma International untuk membakukan JavaScript.
V8 dapat bekerja secara mandiri atau dapat diintegrasikan ke dalam aplikasi C ++ apa pun. Berkat ini, Anda dapat menulis kode C ++ Anda sendiri, dan membuatnya tersedia untuk JavaScript.
Acara
Acara adalah segala sesuatu yang terjadi dalam aplikasi kita dan apa yang bisa kita jawab.
Node memiliki dua jenis acara:
- Peristiwa sistem: C ++ kernel dari perpustakaan libuv. (Misalnya, mengakhiri membaca file).
- Acara Kustom: inti JavaScript.
Menulis Hello World di Node.js
Kenapa tidak
Buat file app.js dan tambahkan yang berikut ke dalamnya.
console.log ("Hello World!");
Buka terminal Node, ubah direktori ke folder tempat file disimpan, dan jalankan node app.js.
Voila - Anda baru saja menulis "Hello World" di Node.js.
Ada banyak sumber daya yang dapat Anda gunakan untuk mempelajari lebih lanjut tentang Node.js, termasuk
freeCodeCamp.org.