Rumah > Artikel > hujung hadapan web > Adakah nodejs js?
Nodejs bukan js, tetapi platform yang membenarkan js dijalankan pada pelayan. js (nama penuh JavaScript) ialah bahasa pengaturcaraan, dan Node ialah persekitaran berjalan JavaScript berdasarkan enjin Chrome V8, platform pembangunan yang membenarkan JavaScript berjalan pada pelayan.
Persekitaran pengendalian tutorial ini: sistem Windows 7, nodejs versi 12.19.0, komputer DELL G3.
Nodejs bukan js, tetapi platform yang membenarkan js dijalankan pada pelayan.
Node.js telah dikeluarkan pada Mei 2009 dan dibangunkan oleh Ryan Dahl Ia adalah persekitaran berjalan JavaScript berdasarkan enjin Chrome V8 Ia menggunakan model I/O yang dipacu peristiwa untuk membenarkan JavaScript untuk dijalankan dalam Platform pembangunan sebelah pelayan yang menjadikan JavaScript sebagai bahasa skrip setanding dengan bahasa sebelah pelayan seperti PHP, Python, Perl dan Ruby.
JavaScript boleh melaksanakan pengaturcaraan sebelah pelayan berdasarkan teknologi Node.js.
Ciri Node.js
Io tak segerak tidak menyekat
Sebagai contoh, apabila mengakses Apabila pangkalan data memperoleh data, ia mengambil sedikit masa. Dalam mekanisme pemprosesan satu utas tradisional, selepas melaksanakan kod untuk mengakses pangkalan data, keseluruhan utas akan berhenti seketika dan menunggu pangkalan data mengembalikan hasilnya sebelum melaksanakan kod berikutnya. Dalam erti kata lain, I/O menyekat pelaksanaan kod dan sangat mengurangkan kecekapan pelaksanaan program.
Disebabkan mekanisme I/O tidak menyekat yang digunakan dalam Node.js, selepas kod yang mengakses pangkalan data dilaksanakan, kod di belakangnya akan dilaksanakan dan kod pemprosesan untuk pangkalan data mengembalikan hasil akan diletakkan dalam fungsi panggil balik, sekali gus meningkatkan kecekapan pelaksanaan program.
Apabila I/O selesai, utas yang menjalankan operasi I/O akan dimaklumkan dalam bentuk acara dan utas akan melaksanakan fungsi panggil balik acara ini. Untuk mengendalikan I/O tak segerak, utas mesti mempunyai gelung peristiwa, sentiasa menyemak sama ada terdapat peristiwa yang tidak dikendalikan dan memprosesnya secara bergilir.
Dalam mod menyekat, satu utas hanya boleh mengendalikan satu tugasan Untuk meningkatkan daya pemprosesan, pelbagai benang mesti digunakan. Dalam mod tidak menyekat, benang sentiasa menjalankan operasi pengiraan, dan penggunaan teras CPU bagi benang ini sentiasa 100%. Oleh itu, ini adalah penyelesaian falsafah yang khusus: Daripada membuat ramai orang terbiar, adalah lebih baik bagi seseorang untuk mempertaruhkan nyawanya dan bekerja hingga mati.
Berutas tunggal
Dalam bahasa sebelah pelayan seperti Java, PHP atau .net, urutan baharu dibuat untuk setiap sambungan pelanggan. Setiap urutan memerlukan lebih kurang 2MB memori. Dalam erti kata lain, secara teorinya, bilangan maksimum pengguna yang boleh disambungkan ke pelayan dengan memori 8GB pada masa yang sama adalah kira-kira 4,000. Untuk membolehkan aplikasi Web menyokong lebih ramai pengguna, bilangan pelayan perlu ditambah, dan kos perkakasan aplikasi Web sudah tentu akan meningkat.
Node.js tidak mencipta urutan baharu untuk setiap sambungan pelanggan, tetapi hanya menggunakan satu urutan. Apabila pengguna menyambung, peristiwa dalaman dicetuskan Melalui mekanisme I/O yang tidak menyekat dan dipacu peristiwa, program Node.js adalah selari secara makroskopik. Menggunakan Node.js, pelayan dengan memori 8GB boleh mengendalikan lebih daripada 40,000 sambungan pengguna secara serentak.
Selain itu, dengan faedah benang tunggal, sistem pengendalian tidak lagi mempunyai masa overhed untuk penciptaan dan pemusnahan benang. Walau bagaimanapun, threading tunggal juga mempunyai banyak kelemahan, yang akan diterangkan secara terperinci dalam keburukan Node.js, sila teruskan membaca.
Didorong peristiwa
Dalam Node, apabila pelanggan meminta untuk mewujudkan sambungan, menyerahkan data dan gelagat lain, peristiwa yang sepadan akan dicetuskan. Dalam Node, hanya satu fungsi panggil balik acara boleh dilaksanakan pada satu masa, tetapi di tengah-tengah melaksanakan fungsi panggil balik acara, peristiwa lain berlaku dan acara lain boleh diproses sebaliknya (contohnya, pengguna baharu menyambung), dan kemudian Kembali fungsi panggil balik yang terus melaksanakan acara asal mekanisme pemprosesan ini dipanggil mekanisme "gelung peristiwa".
Lapisan bawah Node.js ialah C (V8 juga ditulis dalam C). Hampir separuh daripada kod asas digunakan untuk pembinaan baris gilir acara dan baris gilir fungsi panggil balik. Menggunakan didorong peristiwa untuk melengkapkan penjadualan tugas pelayan adalah sesuatu yang hanya boleh difikirkan oleh seorang genius. Tarian di hujung jarum, dengan satu utas, mengambil misi mengendalikan banyak tugas.
Perhatikan gelung acara di sini, yang juga boleh dikatakan sebagai intipati Node.js Berikut ialah petikan daripada tapak web rasmi Node.js >
┌───────────────────────────┐ ┌─>│ timers │ │ └─────────────┬─────────────┘ │ ┌─────────────┴─────────────┐ │ │ pending callbacks │ │ └─────────────┬─────────────┘ │ ┌─────────────┴─────────────┐ │ │ idle, prepare │ │ └─────────────┬─────────────┘ ┌───────────────┐ │ ┌─────────────┴─────────────┐ │ incoming: │ │ │ poll │<─────┤ connections, │ │ └─────────────┬─────────────┘ │ data, etc. │ │ ┌─────────────┴─────────────┐ └───────────────┘ │ │ check │ │ └─────────────┬─────────────┘ │ ┌─────────────┴─────────────┐ └──┤ close callbacks │ └───────────────────────────┘Memetik petikan daripada tapak web rasmi Node: Nota: Setiap kotak akan dipanggil "peringkat" gelung acara.
Setiap peringkat mempunyai baris gilir panggilan balik FIFO untuk dilaksanakan. Walaupun setiap peringkat adalah istimewa dengan caranya sendiri, secara amnya apabila gelung acara memasuki peringkat tertentu, ia akan melaksanakan sebarang operasi khusus untuk peringkat itu dan kemudian melaksanakan panggilan balik pada baris gilir peringkat tersebut sehingga baris gilir habis atau bilangan panggilan balik maksimum telah telah dilaksanakan. Apabila baris gilir habis atau had panggil balik dicapai, gelung acara bergerak ke fasa seterusnya, dan seterusnya.
Mengenai gelung acara, yang merupakan titik teras, penemuduga sering bertanya soalan tentang output pelaksanaan tertentu Anda boleh membaca artikel saya
Merentas platform.
Pada mulanya, Node hanya boleh dijalankan pada platform Linux. Kemudian, dengan pembangunan Node, Microsoft menyedari kewujudannya dan melaburkan satu pasukan untuk membantu Node mencapai keserasian dengan platform Windows Apabila versi v0.6.0 dikeluarkan, Node sudah boleh berjalan terus pada platform Window. Nod ialah platform merentas berdasarkan libuv.
Kelemahan Node.js
Kelemahan utas tunggal
Node.js Salah satu ciri-ciri adalah single-threading, yang membawa banyak faedah, tetapi ia juga mempunyai kelemahan Kelemahan single-threading adalah seperti berikut.
Tidak dapat menggunakan CPU berbilang teras
Ralat akan menyebabkan keseluruhan aplikasi keluar dan tidak boleh terus memanggil I/O tak segerak
Sejumlah besar pengiraan menduduki CPU, menjadikannya mustahil untuk terus memanggil I/O tak segerak
Senario aplikasi daripada Node.js
Memperkenalkan ciri dan keburukan Node.js, dan kemudian bercakap tentang senario aplikasi Node.js.
Apakah jenis aplikasi Node.js sesuai untuk dibangunkan?
Pandai I/O, tak pandai kira. Kerana Node.js adalah yang terbaik dalam penjadualan tugas, jika perniagaan anda mempunyai banyak pengiraan CPU, ini sebenarnya bermakna pengiraan ini menyekat urutan tunggal ini, yang tidak sesuai untuk pembangunan Node, tetapi ia bukan tanpa penyelesaian, hanya dengan mengatakan Tidak cukup sesuai.
Node.js sangat sesuai apabila aplikasi perlu mengendalikan sejumlah besar I/O serentak dan tidak memerlukan pemprosesan yang sangat kompleks dalam aplikasi sebelum menghantar respons kepada pelanggan. Node.js juga sangat sesuai untuk bekerja dengan soket web untuk membangunkan aplikasi interaktif masa nyata dengan sambungan yang panjang.
Senario khusus boleh dinyatakan seperti berikut:
Kategori pertama: sistem pengumpulan borang pengguna, sistem pengurusan latar belakang, sistem interaksi masa nyata, sistem peperiksaan, rangkaian perisian, aplikasi web Concurrency mewah;
Kategori kedua: permainan dalam talian berbilang pemain berdasarkan web, kanvas dan lain-lain
Yang ketiga kategori : Pelanggan sembang masa nyata berbilang orang berasaskan web, ruang sembang, siaran langsung grafik; 🎜 >
Kategori kelima: mengendalikan pangkalan data, menyediakan API berasaskan json untuk terminal hadapan dan mudah alih;
Tencent: Gunakan Nod pada sambungan panjang untuk menyediakan kefungsian masa nyata.
Tunggu...
Atas ialah kandungan terperinci Adakah nodejs js?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!