Node.js adalah persekitaran jangka masa JavaScript. Kedengarannya hebat, tetapi apa maksudnya? Bagaimana ia berfungsi?
Persekitaran jangka masa Node.js merangkumi semua yang anda perlukan untuk melaksanakan program yang ditulis dalam JavaScript.

Node.js wujud ketika pembangun asal JavaScript memperluasnya dari sesuatu yang hanya dapat anda jalankan di penyemak imbas hingga sesuatu yang dapat anda jalankan di mesin anda sebagai aplikasi mandiri.
Sekarang anda boleh melakukan lebih banyak lagi dengan JavaScript daripada hanya menjadikan laman web interaktif.
JavaScript kini mempunyai keupayaan untuk melakukan perkara yang boleh dilakukan oleh bahasa skrip lain seperti Python.
Kedua-dua JavaScript penyemak imbas anda dan Node.js berjalan pada mesin runtime JavaScript V8. Enjin ini mengambil kod JavaScript anda dan menukarnya menjadi kod mesin yang lebih pantas. Kod mesin adalah kod tahap rendah yang dapat dijalankan oleh komputer tanpa perlu menafsirkannya terlebih dahulu.
Mengapa Node.js?
Inilah definisi rasmi seperti yang diberikan di laman web Node.js rasmi:
Node.js® adalah runtime JavaScript yang dibina pada mesin JavaScript V8 Chrome.Node.js menggunakan model I / O yang tidak disekat berdasarkan peristiwa yang menjadikannya ringan dan cekap.
Ekosistem pakej Node.js, npm, adalah ekosistem perpustakaan sumber terbuka terbesar di dunia.
Kami sudah membincangkan baris pertama definisi ini: "Node.js® adalah runtime JavaScript yang dibina pada mesin JavaScript V8 Chrome." Sekarang mari kita fahami dua baris lain supaya kita dapat mengetahui mengapa Node.js begitu popular.
I / O merujuk kepada input / output. Ini dapat berupa mulai dari membaca / menulis file lokal hingga membuat permintaan HTTP hingga API.
I / O memerlukan masa dan dengan itu menyekat fungsi lain.
Pertimbangkan senario di mana kita meminta pangkalan data backend untuk perincian pengguna1 dan pengguna2 dan kemudian mencetaknya di skrin / konsol. Respons terhadap permintaan ini memerlukan masa, tetapi kedua permintaan data pengguna dapat dilakukan secara mandiri dan pada waktu yang sama.

Menyekat I / O
Dalam kaedah pencekalan, permintaan data pengguna2 tidak dimulai sampai data pengguna1 dicetak ke layar.
Sekiranya ini adalah pelayan web, kita harus memulakan utas baru untuk setiap pengguna baru. Tetapi JavaScript adalah utas tunggal (tidak betul-betul, tetapi ia mempunyai gelung acara utas tunggal, yang akan kita bincangkan sedikit kemudian). Jadi ini akan menjadikan JavaScript tidak begitu sesuai untuk tugas multi-threaded.
Di situlah bahagian yang tidak menyekat masuk.
Tidak menyekat I / O
Sebaliknya, dengan menggunakan permintaan yang tidak menyekat, Anda dapat memulai permintaan data untuk pengguna2 tanpa menunggu respons terhadap permintaan pengguna1. Anda boleh memulakan kedua-dua permintaan secara selari.
I / O tanpa sekatan ini menghilangkan keperluan multi-threading kerana pelayan dapat menangani banyak permintaan pada masa yang sama.
Gelung peristiwa JavaScript
Sekiranya anda mempunyai masa 26 minit, tonton penjelasan video yang sangat baik mengenai Node Event Loop:
Jika tidak, berikut adalah penjelasan langkah demi langkah yang cepat mengenai cara kerja Loop Acara JavaScript.

- Tolak
main()
ke timbunan panggilan. - Tolak
console.log()
ke timbunan panggilan. Ini kemudian berjalan dengan segera dan muncul. - Tolak
setTimeout(2000)
ke timbunan.setTimeout(2000)
adalah API Node. Apabila kami menyebutnya, kami mendaftarkan pasangan panggilan balik peristiwa. Acara akan menunggu 2000 milisaat, maka panggilan balik adalah fungsinya. - Setelah mendaftarkannya di API,
setTimeout(2000)
muncul dari timbunan panggilan. - Sekarang yang kedua
setTimeout(0)
didaftarkan dengan cara yang sama. Kami kini mempunyai dua API Node yang menunggu untuk dilaksanakan. - Setelah menunggu 0 saat,
setTimeout(0)
beralih ke barisan panggil balik, dan perkara yang sama berlaku dengansetTimeout(2000)
. - Dalam barisan panggil balik, fungsi menunggu timbunan panggilan kosong, kerana hanya satu pernyataan yang dapat melaksanakan satu waktu. Ini dijaga oleh gelung acara.
- Yang terakhir
console.log()
berjalan, danmain()
undian muncul dari timbunan panggilan. - Gelung peristiwa melihat bahawa timbunan panggilan kosong dan barisan panggil balik tidak kosong. Oleh itu, ia memindahkan panggilan balik (dalam urutan pertama dalam-keluar-keluar) ke timbunan panggilan untuk pelaksanaan.
npm

Ini adalah perpustakaan yang dibina oleh komuniti hebat yang akan menyelesaikan sebahagian besar masalah umum anda. npm (Node package manager) mempunyai pakej yang boleh anda gunakan dalam aplikasi anda untuk menjadikan pembangunan anda lebih pantas dan cekap.
Memerlukan
Memerlukan melakukan tiga perkara:
- Ini memuat modul yang dibundel dengan Node.js seperti sistem fail dan HTTP dari Node.js API.
- Ia memuatkan perpustakaan pihak ketiga seperti Express dan Mongoose yang anda pasangkan dari npm.
- Ini membolehkan anda memerlukan fail anda sendiri dan memodulasi projek.
Require adalah fungsi, dan ia menerima parameter "path" dan kembali module.exports
.
Modul Node
Modul Node adalah sekatan kod yang boleh digunakan semula yang kewujudannya tidak mempengaruhi kod lain secara tidak sengaja.
Anda boleh menulis modul anda sendiri dan menggunakannya dalam pelbagai aplikasi. Node.js mempunyai satu set modul terbina dalam yang boleh anda gunakan tanpa pemasangan lagi.
V8 turbo-charge JavaScript dengan memanfaatkan C ++
V8 adalah mesin runtime sumber terbuka yang ditulis dalam C ++.
JavaScript -> V8 (C ++) -> Kod Mesin
V8 menerapkan skrip yang disebut ECMAScript seperti yang ditentukan dalam ECMA-262. Skrip ECMAS dibuat oleh Ecma International untuk menyeragamkan JavaScript.
V8 boleh dijalankan secara mandiri atau dapat disisipkan ke dalam aplikasi C ++ mana pun. Ini mempunyai kait yang membolehkan anda menulis kod C ++ anda sendiri yang dapat anda sediakan untuk JavaScript.
Ini pada dasarnya membolehkan anda menambahkan ciri ke JavaScript dengan memasukkan V8 ke dalam kod C ++ anda supaya kod C ++ anda lebih memahami daripada apa yang dinyatakan oleh standard ECMAScript.
Edit: Seperti yang diperhatikan oleh Greg Bulmash, terdapat banyak mesin runtime JavaScript yang berbeza selain V8 oleh Chrome seperti SpiderMonkey by Mozilla, Chakra oleh Microsoft, dan lain-lain. Perincian yang sama boleh didapati di halaman ini.
Acara
Sesuatu yang telah berlaku dalam aplikasi kami yang dapat kami balas. Terdapat dua jenis peristiwa di Node.
- Peristiwa Sistem: Inti C ++ dari perpustakaan yang disebut libuv. (Contohnya, selesai membaca fail).
- Acara Tersuai: Inti JavaScript.
Menulis Hello World di Node.js
Kita harus melakukan ini, bukan?
Buat fail app.js dan tambahkan yang berikut ke dalamnya.
console.log("Hello World!");
Buka terminal nod anda, ubah direktori ke folder tempat fail disimpan dan jalankan node app.js
.
Bam - anda baru sahaja menulis Hello World di Node.js.
Ikuti @ Priyesh_p18Terdapat banyak sumber yang boleh anda gunakan untuk mengetahui lebih lanjut mengenai Node.js, termasuk freeCodeCamp.org.