Tentang Node.js®
Sebagai runtime JavaScript berbasis peristiwa asinkron, Node.js dirancang untuk membangun aplikasi jaringan yang dapat diskalakan. Dalam contoh "Hello World" berikut, banyak koneksi dapat ditangani secara bersamaan. Pada setiap koneksi, panggilan baliknya adalah dipecat, tetapi jika tidak ada pekerjaan yang harus dilakukan, Node.js akan tidur.
const { createServer } = require('node:http');
const hostname = '127.0.0.1';
const port = 3000;
const server = createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
Ini berbeda dengan model konkurensi yang lebih umum saat ini, di mana utas OS dipekerjakan. Jaringan berbasis thread relatif tidak efisien dan sangat sulit untuk digunakan. Selain itu, pengguna Node.js bebas dari kekhawatiran dead-locking proses, karena tidak ada kunci. Hampir tidak ada fungsi di Node.js langsung melakukan I/O, jadi proses tidak pernah memblokir kecuali saat I/O dilakukan menggunakan metode sinkron dari pustaka standar Node.js. Karena tidak ada yang menghalangi, sistem yang dapat diskalakan sangat masuk akal untuk dikembangkan di Node.js.
Jika ada beberapa bahasa yang kurang familiar, ada artikel lengkap tentang Blocking vs. Non-Blocking.
Node.js memiliki desain yang mirip dengan, dan dipengaruhi oleh, sistem seperti Event Machine Ruby dan Twisted Python. Node.js membawa model acara sedikit lebih jauh. Ini menyajikan loop peristiwa sebagai konstruksi runtime, bukan sebagai perpustakaan. Di sistem lain, selalu ada panggilan pemblokiran untuk memulai perulangan peristiwa.
Biasanya, perilaku ditentukan melalui callback di awal skrip, dan di akhir skrip, server dimulai melalui panggilan pemblokiran seperti EventMachine::run()
. Di Node.js, tidak ada panggilan start-the-event-loop. Node.js cukup memasuki loop acara setelah menjalankan skrip input. Node.js keluar dari loop peristiwa ketika tidak ada lagi callback yang harus dilakukan. Perilaku ini seperti JavaScript browser — loop peristiwa disembunyikan dari pengguna.
HTTP adalah warga negara kelas satu di Node.js, dirancang dengan streaming dan rendah latensi dalam pikiran. Ini membuat Node.js sangat cocok untuk fondasi web perpustakaan atau kerangka kerja.
Node.js dirancang tanpa thread bukan berarti Anda tidak dapat memanfaatkan banyak inti di lingkungan Anda. Proses anak dapat dihasilkan dengan menggunakan API child_process.fork()
kami, dan dirancang agar mudah untuk berkomunikasi. Dibangun di atas antarmuka yang sama adalah modul cluster
, yang memungkinkan Anda berbagi soket antar proses untuk mengaktifkan penyeimbangan beban pada inti Anda.
Sumber Daya Resmi Node.js
Untuk memastikan keaslian dan keamanan saat bekerja dengan Node.js, selalu gunakan sumber resmi. Hindari mempercayai email, biner, atau unduhan dari sumber yang tidak resmi.
Website Node.js Resmi
Untuk mengunduh biner Node.js dan mengakses dokumentasi resmi gunakan website resmi kami:
- nodejs.org
- nodejs.dev (Dialihkan ke https://nodejs.org)
- iojs.org (Dialihkan ke https://nodejs.org)
Pakages (Paket) npm resmi
Tim Node.js memelihara cakupan paket npm resmi berikut:
Selain itu, tim Node.js mengelola paket yang diterbitkan oleh akun npm nodejs-foundation
,
meskipun paket terkait Node.js lainnya (seperti undici
) juga dapat dikelola oleh kontributor yang terkait erat dengan proyek.
Menggunakan paket dari tim Node.js menjamin bahwa Anda bekerja dengan komponen Node.js yang didukung secara resmi.
Org GitHub Resmi
Node.js dan proyek terkait dikelola di bawah organisasi GitHub resmi berikut:
Saluran Komunikasi Resmi
Node.js dan OpenJS Foundation berkomunikasi melalui berbagai saluran resmi dan yang didukung komunitas. Anda dapat menemukan detail tentang cara terlibat di halaman Berpartisipasi.
Melaporkan Masalah Situs Web dan downtimenya
Jika kamu mengalami masalah dengan situs web Node.js, laporkan di repositori situs web Node.js. Untuk pembaruan terkini tentang gangguan, kunjungi Cek Status Web Node.js."Note: Dukungan hanya tersedia dalam bahasa Inggris Mohon Sesuaikan dengan Format yang diberikan"