Rumah > hujung hadapan web > tutorial js > Penjelasan terperinci tentang modul HTTP dan modul acara dalam Node.js_node.js

Penjelasan terperinci tentang modul HTTP dan modul acara dalam Node.js_node.js

WBOY
Lepaskan: 2016-05-16 16:31:18
asal
1561 orang telah melayarinya

Pelayan http Node.js

Node.js membolehkan kami membuat pelayan dan klien dengan menggunakan API peringkat rendah modul HTTP. Apabila kita mula belajar nod, kita semua akan menemui kod berikut:

Salin kod Kod adalah seperti berikut:

var http = memerlukan('http');
http.createServer(fungsi (req,res) {
res.end('Hello Worldn');
}).dengar(3000,"127.0.0.1");
console.log("Keseronokan pelayan di http://127.0.0.1:3000");

Kod ini termasuk maklumat tentang modul http, yang bermaksud:

1. Minta modul HTTP daripada teras `Node.js` dan tetapkan ia kepada pembolehubah untuk digunakan dalam skrip masa hadapan.
Skrip kemudiannya mempunyai akses kepada kaedah untuk menggunakan `HTTP` melalui `Node.js`.

2. Gunakan `createServer` untuk mencipta objek pelayan web baharu

3 Skrip menghantar fungsi tanpa nama kepada pelayan, memberitahu objek pelayan web perkara yang akan berlaku apabila ia menerima permintaan

4. Baris 4 skrip mentakrifkan port dan hos pelayan web, yang bermaksud anda boleh menggunakan `http://127.0.0.1:3000`
untuk mengakses pelayan

Pengepala HTTP

Untuk setiap permintaan dan respons HTTP, pengepala HTTP dihantar Pengepala HTTP menghantar maklumat tambahan, termasuk jenis kandungan, tarikh pelayan menghantar respons dan kod status HTTP

.

Pengepala http mengandungi banyak maklumat Berikut ialah maklumat pengepala http yang terkandung dalam laman utama Baidu saya:

Memandangkan saya telah menambahkan lebih banyak tapak web pada halaman utama Baidu saya, data di sini mungkin berbeza daripada data pembaca. Daripada ini, kita dapat melihat bahawa pelayan web Baidu ialah BWS/1.1

Berikut ialah maklumat pengepala http kod di atas:

Ubah hala dalam Node.js

Dalam nod, kami boleh membuat pelayan ringkas dengan mudah untuk mengubah hala pelawat ke halaman web lain. Garis panduannya adalah seperti berikut:

1. Hantar kod respons 301 kepada pelanggan untuk memberitahu pelanggan bahawa sumber itu telah dipindahkan ke lokasi lain
2. Hantar pengepala lokasi untuk memberitahu pelanggan tempat untuk mengubah hala.

Kod yang berkaitan adalah seperti berikut:

Salin kod Kod adalah seperti berikut:

var http = memerlukan('http');
http.createServer(fungsi (req,res) {
res.writeHead(301,{
         'Lokasi':'Http://example-2.com/web'
});
res.end();
}).dengar(3000,'127.0.0.1');
console.log("Keseronokan pelayan di http://127.0.0.1:3000");

Buka penyemak imbas dan lawati http://127.0.0.1:3000Halaman akan diubah hala.

Balas permintaan yang berbeza

Node.js bukan sahaja boleh mencipta satu respons, tetapi untuk berbilang jenis permintaan, kami perlu menambah beberapa laluan pada aplikasi. Node menjadikannya mudah dengan menggunakan modul URL. Modul URL membolehkan kami membaca URL, menghuraikannya dan kemudian melakukan sesuatu dengan output.

Salin kod Kod adalah seperti berikut:

var url = memerlukan('url');
var requestURL = "http://example.com:1234/path?query=string#hash"

Kini kita boleh menganalisis URL yang diminta dan mengekstrak kandungan daripadanya, sebagai contoh, untuk mendapatkan nama hos yang boleh kita taip:

Salin kod Kod adalah seperti berikut:

url.parse(requestURL).nama hos

Pada masa ini, dia akan kembali ke "example.com"

Untuk mendapatkan nombor port, anda boleh memasukkan:

Salin kod Kod adalah seperti berikut:

url.parse(requestURL).port

Dia akan mengembalikan "1234"

Modul Acara

Node.js dianggap sebagai cara terbaik untuk mencapai keselarasan. Modul Acara ialah teras Node.js dan digunakan oleh banyak modul lain untuk mengarkitek fungsi di sekitar acara. Memandangkan Node.js berjalan dalam satu utas, sebarang kod penyegerakan disekat. Oleh itu, kita perlu mempertimbangkan beberapa peraturan mudah semasa menulis kod Node.js:

1 Jangan sekat - `Node.js` adalah satu-benang, jika kod menyekat semua yang lain berhenti
2. Pulangan Pantas – Operasi harus kembali dengan cepat. Jika ia tidak dapat kembali dengan cepat, ia harus dialihkan ke proses lain
Modul Acara membolehkan pembangun menyediakan pendengar dan pengendali untuk acara. Dalam klien js, kita boleh menetapkan pendengar untuk acara klik dan kemudian melakukan sesuatu apabila peristiwa itu berlaku:

Salin kod Kod adalah seperti berikut:

var tar = document.getElementById("target");
tar.addEventListener("klik", fungsi () {
alert("acara klik dipecat, sasaran telah diklik"); },palsu);

Sudah tentu, ini adalah contoh tanpa mengambil kira keserasian IE acara utama Node.js adalah lebih biasa acara rangkaian, termasuk:

1. Maklum balas daripada pelayan web

2. Baca data daripada fail
3. Kembalikan data daripada pangkalan data
Untuk menggunakan modul Peristiwa kita perlu membuat contoh Pemancar Peristiwa baharu:

Salin kod Kod adalah seperti berikut:
var EventEmitter= memerlukan('events').EventEmitter;
var test = new EventEmitter();

Sebaik sahaja anda menambah kandungan di atas pada kod, anda boleh menambah acara dan pendengar Kami boleh menghantar acara seperti berikut, seperti:

Salin kod Kod adalah seperti berikut:
test.emit('msg','mesej dihantar melalui nod');

Parameter pertama ialah rentetan yang menerangkan peristiwa supaya ia boleh digunakan untuk pemadanan pendengar

Untuk menerima mesej, anda mesti menambah pendengar, yang mengendalikan acara apabila ia dicetuskan, contohnya:

Salin kod Kod adalah seperti berikut:
test.on('message',function(data){
console.log(data);
});

Modul Acara melaksanakan kaedah mod mendengar acara asas seperti addListener/on, once, removeListener, removeAllListeners dan emit. Ia tidak sama dengan peristiwa pada pokok DOM bahagian hadapan, kerana ia tidak mempunyai gelagat acara kepunyaan DOM seperti menggelegak dan tangkapan lapisan demi lapisan, dan tiada kaedah untuk mengendalikan penghantaran acara seperti preventDefault (), stopPropagation(), stopImmediatePropagation(), dll.

1. Kelas: acara.EventEmitter: Dapatkan kelas EventEmitter melalui require('events').EventEmitter.

2.emitter.on(event, listener): Tambahkan pendengar pada penghujung tatasusunan pendengar untuk acara tertentu. Pemancar pulangan untuk memudahkan panggilan berantai, perkara yang sama di bawah.

3.emitter.removeListener(event, listener) mengalih keluar pendengar daripada tatasusunan pendengar acara

4.emitter.listeners(event) mengembalikan tatasusunan pendengar acara yang ditentukan

Untuk butiran lanjut, lihat: dokumentasi API Node.js

Kod berikut menunjukkan mesej sulit yang boleh merosakkan diri dalam 5 saat:

Salin kod Kod adalah seperti berikut:
var EventEmitter = memerlukan('events').EventEmitter;
var secretMessage = new EventEmitter();
secretMessage.on('message', fungsi (data) {

console.log(data);
});

secretMessage.on('memusnahkan diri', fungsi () {

console.log('mesej dimusnahkan!');
});

secretMessage.emit('message','ini ialah mesej rahsia.Ia akan musnah sendiri dalam 5s');

setTimeout(fungsi () {

secretMessage.emit('self destruct');
},5000);

Dalam skrip ini, dua acara dihantar dan terdapat dua pendengar. Apabila skrip dijalankan, peristiwa mesej berlaku dan dikendalikan oleh pengendali "mesej"

EventEmitter digunakan di mana-mana dalam Node.js, jadi adalah penting untuk menguasainya. Node.js memperoleh data melalui operasi I/O dan menggunakan modul Events secara meluas untuk menyokong pengaturcaraan tak segerak

Soalan Lazim:

S: Adakah terdapat had kepada bilangan maksimum pendengar untuk acara?
Jawapan: Secara lalai, jika acara mempunyai 10 pendengar yang beroperasi padanya, ia akan mengeluarkan amaran. Walau bagaimanapun, nombor ini boleh ditukar menggunakan emitter.setMaxListener(n)

S: Adakah mungkin untuk mendengar semua acara yang dihantar?
Jawapan: Tidak. Kami perlu mencipta pendengar untuk setiap acara yang ingin kami balas

Label berkaitan:
sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan