Rumah hujung hadapan web tutorial js Ketahui lebih lanjut tentang beberapa ciri dalam Node.js_node.js

Ketahui lebih lanjut tentang beberapa ciri dalam Node.js_node.js

May 16, 2016 pm 04:35 PM
node.js ciri

Node.js ialah bahasa bahagian belakang yang baru muncul yang direka untuk membantu pengaturcara membina aplikasi berskala dengan cepat. Node.js mempunyai banyak ciri menarik, dan terdapat banyak laporan mengenainya Artikel ini akan menganalisis dan membincangkan ciri seperti EventEmitter, Streams, Gaya Pengekodan, Linting dan Gaya Pengekodan untuk membantu pengguna memahami Node.js dengan lebih mendalam.

Sebagai platform yang dibina pada masa jalan JavaScript Chrome, pengetahuan JavaScript kami nampaknya boleh digunakan untuk aplikasi nod tanpa sambungan atau pengubahsuaian bahasa tambahan, kami boleh menggunakan pengalaman pengaturcaraan bahagian hadapan kami pada pengaturcaraan Backend.

EventEmitter (event emitter)

Pertama sekali, anda harus memahami model EventEmitter. Ia boleh menghantar acara dan membenarkan pengguna melanggan acara yang menarik. Kita boleh menganggapnya sebagai lanjutan daripada corak penghantaran panggil balik kepada fungsi tak segerak. Khususnya, EventEmitter akan lebih berfaedah apabila berbilang panggilan balik diperlukan.

Sebagai contoh, pemanggil menghantar permintaan "fail senarai" ke pelayan jauh. Anda mungkin mahu mengumpulkan hasil yang dikembalikan dan melakukan panggilan balik untuk setiap kumpulan. Model EventEmitter membolehkan anda menghantar panggilan balik "fail" pada setiap kumpulan dan melakukan pemprosesan "tamat" apabila semua operasi selesai.

Apabila menggunakan EventEmitter, anda hanya perlu menetapkan acara dan parameter yang berkaitan.

Salin kod Kod adalah seperti berikut:

var EventEmitter = memerlukan('events').EventEmitter;
var util = memerlukan('util');
fungsi MyClass() {
jika (!(contoh MyClass ini)) kembalikan MyClass();
EventEmitter.call(ini);
var diri = ini; setTimeout(fungsi timeoutCb() {
Self.emit('myEvent', 'hello world', 42); }, 1000); }
util.inherits(MyClass, EventEmitter);


Pembina MyClass mencipta pencetus masa dengan kelewatan pencetus 1s dan peristiwa pencetus myEvent. Untuk menggunakan acara berkaitan, anda perlu melaksanakan kaedah on():



Salin kod

Kod adalah seperti berikut:

Perlu diingatkan di sini bahawa walaupun acara EventEmitter yang dilanggan ialah acara tak segerak, apabila masa dicetuskan, tindakan pendengar akan disegerakkan. Oleh itu, jika acara myEvent di atas mempunyai 10 pendengar, semua pendengar akan dipanggil mengikut urutan tanpa menunggu gelung acara.

Jika subkelas EventEmitter menjana peristiwa emit('error'), tetapi tiada pendengar melanggannya, maka kelas asas EventEmitter akan membuang pengecualian, menyebabkan uncaughtException dicetuskan apabila objek proses dilaksanakan.


verror

verror ialah lanjutan daripada Ralat kelas asas, yang membolehkan kami mentakrifkan mesej output menggunakan format aksara printf.

Strim

Sekiranya terdapat fail yang sangat besar yang perlu diproses, kaedah yang ideal adalah dengan membaca sebahagian daripadanya dan menulis sebahagian daripadanya Tidak kira berapa besar fail itu, selagi masa membenarkan, pemprosesan akan sentiasa dilengkapkan. Konsep aliran perlu digunakan di sini. Strim ialah satu lagi model yang digunakan secara meluas dalam Node, yang merupakan pelaksanaan EventEmitter. Menyediakan antara muka yang boleh dibaca, boleh ditulis atau dupleks penuh. Ia adalah antara muka abstrak yang menyediakan acara operasi biasa termasuk: boleh dibaca, boleh ditulis, longkang, data, tamat dan tutup. Jika kita boleh menggunakan saluran paip untuk menyepadukan acara ini dengan berkesan, operasi interaktif yang lebih berkuasa akan dicapai. Dengan menggunakan .pipe(), Note boleh berkomunikasi dengan tekanan belakang melalui saluran paip. Tekanan belakang bermaksud: hanya membaca yang boleh ditulis, atau hanya menulis yang boleh dibaca.

Sebagai contoh, kami kini menghantar data dari stdin ke fail tempatan dan pelayan jauh:

Salin kod

Kod adalah seperti berikut:


var fs = memerlukan('fs');

var net = memerlukan('net'); var localFile = fs.createWriteStream('localFile.tmp'); net.connect('255.255.255.255', 12345, function(client) { process.stdin.pipe(client); process.stdin.pipe(localFile);
});

Dan jika kami ingin menghantar data ke fail setempat dan ingin menggunakan gunzip untuk memampatkan strim, kami boleh melakukan ini:

Salin kod Kod adalah seperti berikut:

var fs = memerlukan('fs');
var zlib = memerlukan('zlib');

process.stdin.pipe(zlib.createGunzip()).pipe(fs.createWriteStream('localFile.tar'));

Jika anda ingin mengetahui lebih lanjut tentang strim, sila klik di sini.

Kawalan Aliran

Memandangkan JS mempunyai objek kelas pertama, penutupan dan konsep fungsi lain, kebenaran panggil balik boleh ditakrifkan dengan mudah. Ini sangat mudah apabila membuat prototaip dan boleh menyepadukan kebenaran logik seperti yang diperlukan. Tetapi ia juga memudahkan untuk menggunakan fungsi terbina dalam yang kekok.

Sebagai contoh, kami ingin membaca satu siri fail mengikut urutan dan kemudian melaksanakan tugas tertentu:

Salin kod Kod adalah seperti berikut:

fs.readFile('firstFile', 'utf8', function firstCb(err, firstFile) {
doSomething(firstFile);
fs.readFile('secondFile', 'utf8', function secondCb(err, secondFile) {
doSomething(secondFile);
fs.readFile('thirdFile', 'utf8', function thirdCb(err, thirdFile) {
doSomething(thirdFile);
});
});
});

Masalah dengan model ini ialah:

1. Logik kod ini sangat berselerak dan tidak teratur, dan proses operasi yang berkaitan sukar difahami.
2. Tiada ralat atau pengendalian pengecualian.
3. Kebocoran memori penutupan dalam JS adalah sangat biasa dan sukar untuk didiagnosis dan dikesan.

Jika kita ingin melakukan satu siri operasi tak segerak pada set input, menggunakan perpustakaan kawalan aliran ialah pilihan yang lebih bijak. Vasync digunakan di sini.

vasync ialah perpustakaan kawalan proses yang ideanya datang daripada operasi tak segerak. Keistimewaannya ialah ia membolehkan pengguna melihat dan memerhati pemprosesan tugas tertentu. Maklumat ini sangat berguna untuk mengkaji proses berlakunya ralat.

Gaya Pengekodan

Gaya pengaturcaraan boleh dikatakan sebagai topik yang paling kontroversi, kerana ia selalunya santai. Lobak merah dan kubis, setiap orang mempunyai pilihan mereka sendiri. Perkara yang penting ialah mencari gaya yang sesuai untuk kedua-dua individu dan pasukan. Sesetengah warisan tradisional mungkin menjadikan perjalanan pembangunan Node lebih baik.

1. Namakan fungsi
2. Cuba namakan semua fungsi.
3. Elakkan penutupan
4. Jangan tentukan fungsi lain dalam fungsi. Ini boleh mengurangkan banyak kemalangan kebocoran memori penutupan yang tidak dijangka.
5. Semakin banyak fungsi

Walaupun V8 JIT ialah enjin yang berkuasa, fungsi yang lebih kecil dan diperkemas akan disepadukan dengan lebih baik dengan V8. Tambahan pula, jika fungsi kami kecil dan indah (kira-kira 100 baris), kami akan berterima kasih kepada diri sendiri apabila kami membaca dan mengekalkannya.

Semak gaya secara pemrograman: Kekalkan konsistensi gaya dan kuatkan gaya dengan alat pemeriksaan. Kami menggunakan jsstyle.

Linting (pemeriksaan kod)

Alat Lint boleh melakukan analisis statik kod tanpa menjalankannya dan menyemak kemungkinan ralat dan risiko, seperti kehilangan penyataan putus sekiranya berlaku suis. Lint bukan semata-mata setara dengan pemeriksaan gaya, ia lebih ditujukan kepada analisis risiko objektif dan bukannya pemilihan gaya subjektif. Kami menggunakan javascriptlint, yang mempunyai item semakan yang kaya.

Membalak

Apabila kita memprogram dan mengekod, kita perlu mempunyai perspektif jangka panjang. Khususnya, pertimbangkan alat yang hendak digunakan untuk penyahpepijatan. Langkah pertama yang sangat baik ialah pembalakan yang berkesan. Kami perlu mengenal pasti maklumat untuk melihat perkara yang patut diberi perhatian khusus semasa penyahpepijatan dan perkara yang digunakan untuk analisis dan penyelidikan semasa masa jalan. Anda disyorkan untuk menggunakan Bunyan, sebuah Node.jspustaka log Format output data ialah JSON Untuk maklumat lanjut, sila klik di sini.

Pelayan Pelanggan

Jika aplikasi telah mengedarkan keupayaan pemprosesan, ia akan menjadi lebih menarik di pasaran. Antara muka yang serupa boleh diterangkan menggunakan HTTP RESTFul API atau TCP JSON mentah. Ini membolehkan pembangun menggabungkan pengalaman Node mereka dengan persekitaran rangkaian tak segerak dan penggunaan strim dengan sistem teragih dan berskala.

Alat yang biasa digunakan:

1 Ringkasnya, ini adalah alat untuk membina perkhidmatan REST. Ia menyediakan sokongan pemprosesan tontonan dan penyahpepijatan yang baik, serta menyokong Bunyan dan DTrace.

2. cepat

fast ialah alat ringan yang menggunakan TCP untuk memproses mesej JSON. Menyediakan sokongan DTrace, membolehkan kami mengenal pasti ciri prestasi klien pelayan dengan cepat.

3. aliran kerja

Aliran kerja dibina atas restify dan boleh menentukan proses perniagaan untuk siri perkhidmatan jauh dan API. Contohnya: status ralat, tamat masa, penyambungan semula, pengendalian kesesakan, dsb.

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Artikel tentang kawalan memori dalam Node Artikel tentang kawalan memori dalam Node Apr 26, 2023 pm 05:37 PM

Perkhidmatan Node yang dibina berdasarkan bukan sekatan dan dipacu peristiwa mempunyai kelebihan penggunaan memori yang rendah dan sangat sesuai untuk mengendalikan permintaan rangkaian besar-besaran. Di bawah premis permintaan besar-besaran, isu yang berkaitan dengan "kawalan memori" perlu dipertimbangkan. 1. Mekanisme kutipan sampah V8 dan had ingatan Js dikawal oleh mesin kutipan sampah

Mari bercakap secara mendalam tentang modul Fail dalam Node Mari bercakap secara mendalam tentang modul Fail dalam Node Apr 24, 2023 pm 05:49 PM

Modul fail ialah enkapsulasi operasi fail asas, seperti membaca/menulis/membuka/menutup/memadam fail, dsb. Ciri terbesar modul fail ialah semua kaedah menyediakan dua versi **segerak** dan ** asynchronous**, dengan Kaedah dengan akhiran penyegerakan adalah semua kaedah penyegerakan, dan kaedah yang tidak semuanya adalah kaedah heterogen.

Pengenalan kepada perbezaan antara versi win7 home dan versi win7 ultimate Pengenalan kepada perbezaan antara versi win7 home dan versi win7 ultimate Jul 12, 2023 pm 08:41 PM

Semua orang tahu bahawa terdapat banyak versi sistem win7, seperti versi win7 ultimate, versi profesional win7, versi rumah win7, dll. Ramai pengguna terjerat antara versi rumah dan versi muktamad, dan tidak tahu versi mana yang hendak dipilih, jadi hari ini saya akan Izinkan saya memberitahu anda tentang perbezaan antara Win7 Family Meal dan Win7 Ultimate Mari kita lihat. 1. Alami Edisi Asas Rumah Berbeza menjadikan operasi harian anda lebih pantas dan mudah, membolehkan anda mengakses program dan dokumen yang paling kerap anda gunakan dengan lebih pantas dan mudah. Home Premium memberi anda pengalaman hiburan terbaik, menjadikannya mudah untuk menikmati dan berkongsi rancangan TV, foto, video dan muzik kegemaran anda. Edisi Ultimate menyepadukan semua fungsi setiap edisi dan mempunyai semua fungsi hiburan dan ciri profesional Windows 7 Home Premium.

Ketahui lebih lanjut tentang Penampan dalam Node Ketahui lebih lanjut tentang Penampan dalam Node Apr 25, 2023 pm 07:49 PM

Pada mulanya, JS hanya berjalan pada bahagian penyemak imbas Mudah untuk memproses rentetan berkod Unikod, tetapi sukar untuk memproses rentetan binari dan bukan berkod Unikod. Dan binari ialah format data peringkat terendah komputer, video/audio/program/pakej rangkaian

Kuasai konsep utama Spring MVC: Fahami ciri penting ini Kuasai konsep utama Spring MVC: Fahami ciri penting ini Dec 29, 2023 am 09:14 AM

Fahami ciri utama SpringMVC: Untuk menguasai konsep penting ini, contoh kod khusus diperlukan SpringMVC ialah rangka kerja pembangunan aplikasi web berasaskan Java yang membantu pembangun membina struktur yang fleksibel dan berskala melalui corak seni bina Model-View-Controller (MVC). aplikasi web. Memahami dan menguasai ciri utama SpringMVC akan membolehkan kami membangun dan mengurus aplikasi web kami dengan lebih cekap. Artikel ini akan memperkenalkan beberapa konsep penting SpringMVC

Artikel untuk membincangkan cara membangunkan aplikasi Node.js lapisan pembentangan dengan cekap Artikel untuk membincangkan cara membangunkan aplikasi Node.js lapisan pembentangan dengan cekap Apr 17, 2023 pm 07:02 PM

Bagaimana untuk menggunakan Node.js untuk pembangunan aplikasi bahagian hadapan? Artikel berikut akan memperkenalkan anda kepada kaedah membangunkan aplikasi bahagian hadapan dalam Node, yang melibatkan pembangunan aplikasi lapisan pembentangan. Penyelesaian yang saya kongsikan hari ini adalah untuk senario mudah Ia direka untuk membolehkan pembangun bahagian hadapan menyelesaikan beberapa tugas pembangunan bahagian pelayan yang mudah tanpa perlu menguasai terlalu banyak pengetahuan latar belakang dan pengetahuan profesional tentang Node.js, walaupun mereka tidak mempunyai pengekodan. pengalaman.

Adakah terdapat ciri berorientasikan objek seperti kelas di Golang? Adakah terdapat ciri berorientasikan objek seperti kelas di Golang? Mar 19, 2024 pm 02:51 PM

Tiada konsep kelas dalam erti kata tradisional dalam Golang (bahasa Go), tetapi ia menyediakan jenis data yang dipanggil struktur, yang melaluinya ciri berorientasikan objek yang serupa dengan kelas boleh dicapai. Dalam artikel ini, kami akan menerangkan cara menggunakan struktur untuk melaksanakan ciri berorientasikan objek dan menyediakan contoh kod konkrit. Definisi dan penggunaan struktur Pertama, mari kita lihat definisi dan penggunaan struktur. Di Golang, struktur boleh ditakrifkan melalui kata kunci jenis dan kemudian digunakan di mana perlu. Struktur boleh mengandungi atribut

Pilih versi Go yang berkenaan, berdasarkan keperluan dan ciri Pilih versi Go yang berkenaan, berdasarkan keperluan dan ciri Jan 20, 2024 am 09:28 AM

Dengan perkembangan pesat Internet, bahasa pengaturcaraan sentiasa berkembang dan dikemas kini. Antaranya, bahasa Go, sebagai bahasa pengaturcaraan sumber terbuka, telah menarik banyak perhatian sejak beberapa tahun kebelakangan ini. Bahasa Go direka untuk menjadi mudah, cekap, selamat dan mudah dibangunkan dan digunakan. Ia mempunyai ciri-ciri konkurensi tinggi, penyusunan pantas dan keselamatan memori, menjadikannya digunakan secara meluas dalam bidang seperti pembangunan web, pengkomputeran awan dan data besar. Walau bagaimanapun, pada masa ini terdapat versi berbeza bahasa Go yang tersedia. Apabila memilih versi bahasa Go yang sesuai, kita perlu mempertimbangkan kedua-dua keperluan dan ciri. kepala

See all articles