Node.js sepatutnya menjadi salah satu teknologi terhangat hari ini. Artikel ini terutamanya memperkenalkan ciri dan senario aplikasi Node.js.
Node.js ialah platform yang dibina pada masa jalan JavaScript Chrome untuk membina aplikasi web yang pantas dan mudah berskala dengan mudah. Node.js menggunakan model I/O yang dipacu peristiwa, tidak menyekat untuk menjadi ringan dan cekap, yang sangat sesuai untuk aplikasi masa nyata intensif data yang dijalankan pada peranti yang diedarkan.
1. Ciri-ciri
1.1 I/O Asynchronous
Apa yang dipanggil I/O tak segerak adalah relatif kepada I/O segerak. Semasa pelaksanaan program, banyak operasi I/O mesti dilakukan, seperti membaca dan menulis fail, input dan output, permintaan respons, dsb. Secara umumnya, operasi I/O sangat memakan masa. Sebagai contoh, dalam model pengaturcaraan tradisional, jika anda ingin membaca fail beberapa gigabait, seluruh rangkaian akan berhenti seketika dan menunggu fail dibaca sebelum meneruskan. Dalam erti kata lain, operasi I/O menyekat pelaksanaan kod dan mengurangkan kecekapan program.
Berkenaan I/O tak segerak, ia sebenarnya bukanlah sesuatu yang asing bagi jurutera bahagian hadapan, kerana memulakan permintaan Ajax ialah panggilan "tak segerak" yang paling biasa. Dalam Node, mengambil membaca fail (membaca fail ialah operasi I/O yang memakan masa) sebagai contoh, ia sangat serupa dengan cara memulakan permintaan Ajax:
Selepas kod di atas memanggil fs.readFile, kod berikutnya dilaksanakan serta-merta dan detik apabila "membaca fail selesai" tidak dapat diramalkan. Apabila benang menemui operasi I/O, ia tidak akan menunggu operasi I/O berakhir dengan cara menyekat, tetapi hanya akan menghantar permintaan I/O ke sistem pengendalian dan terus melaksanakan penyataan seterusnya. Apabila sistem pengendalian melengkapkan operasi I/O, ia memberitahu utas yang menjalankan operasi I/O dalam bentuk peristiwa dan utas akan memproses acara pada masa tertentu.
1.2 Gelung acara dan fungsi panggil balik
Gelung peristiwa yang dipanggil bermakna Node akan menggunakan mekanisme acara untuk menyelesaikan semua operasi tak segerak, dan terdapat urutan yang menyemak baris gilir acara secara berterusan. Gelung acara menyemak baris gilir acara untuk acara yang tidak dikendalikan sehingga program tamat. Kaedah pengaturcaraan acara mempunyai kelebihan sebagai ringan, gandingan longgar dan hanya memfokuskan pada titik transaksi Walau bagaimanapun, dalam senario berbilang tugas tak segerak, acara adalah bebas antara satu sama lain, dan cara bekerjasama adalah masalah. Dalam Javascript, fungsi panggil balik ada di mana-mana dan fungsi panggil balik adalah cara terbaik untuk menerima data yang dikembalikan daripada panggilan tak segerak.
1.3 Benang Tunggal
Node mengekalkan ciri berbenang tunggal JS dalam penyemak imbas. Kelebihan terbesar threading tunggal ialah anda tidak perlu risau tentang isu penyegerakan keadaan seperti pengaturcaraan berbilang benang Tidak ada kebuntuan dan tiada overhed penukaran konteks benang. Single-threading juga mempunyai kelemahannya, terutamanya dalam tiga aspek: ia tidak boleh menggunakan CPU berbilang teras akan menyebabkan keseluruhan aplikasi keluar, dan keteguhan aplikasi layak untuk diperiksa dalam jumlah besar; dan menjadikannya mustahil untuk terus memanggil I/O tak segerak.
Untuk menyelesaikan masalah di atas, Node menggunakan idea yang sama seperti HTML5 Web Workers, menggunakan child_process untuk menyelesaikan masalah jumlah pengiraan yang besar dalam satu urutan. Sebilangan besar pengiraan boleh dipecahkan dengan mengedarkan pengiraan kepada pelbagai sub-proses, dan kemudian menyampaikan keputusan melalui mesej acara antara proses.
1.4 Merentas platform
Node ialah platform merentas, iaitu set kod JS yang sama boleh digunakan dan dijalankan pada Windows, Linux, OSX dan platform lain. Ini disebabkan terutamanya oleh Node membina libuv seni bina lapisan platform antara sistem pengendalian dan sistem modul atas Node.
2. Senario aplikasi
1), aplikasi masa nyata: seperti sembang dalam talian, tolak pemberitahuan masa nyata, dsb. (seperti socket.io)
2) Aplikasi teragih: gunakan data sedia ada melalui I/O selari yang cekap
3) Aplikasi alat: Sebilangan besar alatan, daripada penggunaan mampatan bahagian hadapan (seperti gerutu) kepada aplikasi antara muka grafik desktop yang besar
4) Aplikasi permainan: Medan permainan mempunyai keperluan yang tinggi untuk masa nyata dan serentak (seperti rangka kerja pomelo NetEase)
5). Gunakan antara muka yang stabil untuk meningkatkan keupayaan pemaparan web
6) Persekitaran bahasa pengaturcaraan bahagian hadapan dan bahagian belakang yang bersatu: Pembangun bahagian hadapan boleh bertukar dengan cepat kepada pembangunan bahagian pelayan (seperti seni bina MEAN Javascript tulen yang terkenal)