


Ketahui lebih lanjut tentang beberapa ciri dalam Node.js_node.js
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.
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():
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
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');
Dan jika kami ingin menghantar data ke fail setempat dan ingin menggunakan gunzip untuk memampatkan strim, kami boleh melakukan ini:
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:
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. cepatfast 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 kerjaAliran 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.

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

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

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

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

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.

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.

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

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

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.

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

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
