Betapa aku merasakan sakitmu!
Seperti banyak orang, saya merasa sulit untuk mendapatkan inti dari Node.js karena kebanyakan orang hanya menulis / berbicara tentang bagian dari Node yang mereka anggap berguna - dan bagian yang mereka anggap menarik biasanya merupakan manfaat sekunder dari Node daripada yang utama. tujuan. Saya harus mengatakan bahwa menurut saya orang gila mengatakan bahwa Node hanyalah runtime JavaScript. Penggunaan JavaScript oleh Node - dan pemilihan runtime V8-nya - hanyalah sarana untuk mencapai tujuan , alat terbaik untuk masalah yang ingin diselesaikan oleh pengembang Node.
Tujuan utama Node adalah membuat pengelolaan acara pengguna di aplikasi web lebih efisien. Jadi Node sangat banyakdigunakan di bagian belakang aplikasi web. Manajemen acara menuntut ada sesuatu yang mendengarkan di mesin server untuk kejadian pengguna ini. Jadi server http harus diatur untuk merutekan setiap kejadian ke skrip penangan yang sesuai. Node menyediakan kerangka kerja untuk dengan cepat menyiapkan server untuk mendengarkan pada port khusus untuk permintaan pengguna. Node menggunakan JavaScript untuk penanganan peristiwa karena JavaScript memiliki fungsi panggilan balik: ini memungkinkan satu tugas ditangguhkan hingga hasil tugas dependen dikembalikan. Tidak banyak bahasa lain yang memiliki fitur ini dan bahasa yang tidak memiliki interpreter seefisien runtime Google V8. Sebagian besar pengembang web mengetahui JavaScript sehingga tidak ada pembelajaran bahasa tambahan dengan Node. Terlebih lagi, memiliki fungsi panggilan balik memungkinkan penempatan semua tugas pengguna pada satu utastanpa pemblokiran eksplisit diterapkan pada tugas yang menuntut akses ke database atau sistem file. Dan inilah yang mengarah pada efisiensi eksekusi yang superior dari Node di bawah penggunaan bersamaan yang berat - tujuan utama pengembangannya.
Untuk membantu pengguna Node dengan cepat menulis kembali kode akhir, pengembang Node juga mengatur pustaka JS bawaan untuk tugas rutin (misalnya hal-hal yang terkait dengan permintaan HTTP, pengkodean string (de), aliran, dll.) Dan penyimpanan NPM (Manajer Paket Node) : ini adalah kumpulan paket skrip open source yang dikelola pengguna untuk berbagai fungsi standar dan kustom. Semua proyek Node memungkinkan impor paket NPM ke dalam proyek melalui perintah npm install .
Permintaan pengguna yang ditangani melalui Node akan menjadi hal-hal yang dibutuhkan oleh aplikasi web seperti otentikasi, kueri database, manajemen konten (Strapi CMS), dll. Semua ini akan dikirim ke port Node. (Di mana analisis data yang didapat dari database membutuhkan banyak waktu CPU, jenis proses ini paling baik diletakkan pada utas terpisah sehingga tidak memperlambat permintaan pengguna yang lebih sederhana.) Jenis permintaan pengguna lainnya, misalnya untuk memuat halaman web lain , download file CSS / JS / gambar, dll, akan terus dikirim oleh browser ke port default di mesin server tempat program server web (Apache, NGinx, dll) akan menanganinya.
Jadi, dalam praktiknya , Node pada dasarnya adalah kerangka kerja untuk pembuatan server dan penanganan peristiwa secara cepat tetapi hanya menggantikan beberapa fungsi program server web.
Penggunaan non-backend lain dari Node cukup mengeksploitasi salah satu fiturnya, misalnya mesin V8. Misalnya, alat build frontend Grunt dan Gulp menggunakan Node.js untuk memproses skrip build yang dapat dikodekan untuk mengonversi SASS ke CSS, memperkecil file CSS / JS, mengoptimalkan ukuran / pemuatan gambar, dll. Tetapi pekerjaan semacam ini benar-benar hanya penggunaan produk sampingan dari Node, bukan penggunaan utamanya yang untuk membuat proses backend yang efisien untuk aplikasi web.