1. Instalasi
Pertama, buka http://nodejs.org untuk mengunduh dan menginstal. Versi I'm Down adalah 0,8,14. Instalasi sangat sederhana, langkah selanjutnya adalah berikutnya. Kemudian konfigurasikan direktori instalasi di jalur, dan MSI akan menginstal NPM (Node Package Manager) bersama -sama.
Direktori instalasi saya adalah file C:/Program (x86)/nodejs. Saat ini, gunakan perintah CMD Command Window node -v dan npm -v untuk melihat versi yang diinstal di bawah perintah NPM -V
1.1. Helloworld
Buat file baru hello.js di direktori proyek node.js dan ketik baris kode di dalamnya
console.log ('halo, nodejs.');Masukkan konsol baris perintah, masukkan direktori proyek node.js dan ketik node hello.js
Output konsol "Halo, NodeJs."
1.2. Versi Web HelloWorld
Buat http.js baru di direktori proyek node.js, kodenya adalah sebagai berikut
var http = membutuhkan ("http"); http.createServer (fungsi (permintaan, respons) {response.writeHead (200, {"tipe konten": "Teks/html"}); response.write ("Hello World!"); response.end ();}). Listen (8000);Mulai Layanan di baris perintah dan klik Node http.js
Kemudian buka bilah alamat browser dan masukkan http: // localhost: 8000/, dan lihat Hello World! output pada halaman dan berhasil.
Versi node.js harus disinkronkan dengan API
Jumlah versi Node.js adalah reguler, bahkan versi yang stabil, versi ganjil adalah versi non-stabil
2 Analisis Kode HelloWorld
Oke, mulailah menganalisis baris demi baris HelloWorld kami mulai sekarang.
Memperkenalkan modul
var http = membutuhkan ("http");Metode yang membutuhkan digunakan untuk memperkenalkan modul, dan parameternya adalah nama modul. Misalnya, modul sistem file dapat diperkenalkan sebagai berikut:
var fs = membutuhkan ("fs");Kita dapat menggunakan metode kebutuhan () sebagai metode global, tetapi sebenarnya itu lebih seperti metode lokal milik modul tertentu. Dokumentasinya ada di sini: https://nodejs.org/api/globals.html.
Metode yang membutuhkan mengembalikan instance dari modul tertentu, seperti kebutuhan ("http") mengembalikan instance HTTP. Dokumentasi referensi untuk instance http ada di sini: https://nodejs.org/api/http.html.
Kami melihat bahwa modul HTTP memiliki metode createServer (), yang melibatkan baris kode kedua kami.
Buat server
Metode createServer () dari modul HTTP menerima metode sebagai parameter, dan prototipe adalah:
http.createServer ([RequestListener])
RequestListener adalah metode yang akan dikaitkan dengan acara permintaan kelas http.server. Dengan cara ini, ketika permintaan klien tiba, RequestListener akan dipanggil.
RequestListener memiliki dua parameter, dan prototipe fungsi adalah sebagai berikut:
fungsi (permintaan, respons) {} Jenis permintaan parameter pertama adalah http.IncomingMessage , yang mengimplementasikan antarmuka Readable Stream .
Jenis parameter kedua adalah http.ServerResponse , yang mengimplementasikan antarmuka Writeable Stream .
API Stream ada di sini: https://nodejs.org/api/stream.html. Pada saat yang sama, permintaan dan respons adalah EventeMitters, yang dapat memancarkan acara tertentu.
API EventeMitter ada di sini: https://nodejs.org/api/events.html#events_class_events_eventemitter. Nanti kita akan berbicara tentang cara menggunakan Eventemitter untuk meluncurkan dan memproses acara.
Mari kita tinjau kode yang kami buat server:
http.createServer (function (request, response) {response.writeHead (200, {"tipe konten": "teks/polos"}); response.write ("hello world!"); response.end ();}). dengarkan (8000);http.createServer mengembalikan instance http.server. Metode mendengarkan http.server dapat membiarkan server mendengarkan pada port tertentu, yaitu 8000 dalam contoh.
Seperti yang Anda lihat, kami memberikan fungsi anonim untuk CreateServer. Dalam metode ini, kami menulis kembali "Hello World!" Pesan ke klien melalui parameter respons.
Menganalisis permintaan klien
Kami menganalisis metode http.createServer sebelumnya. Parameternya adalah metode dengan dua parameter. Yang satu mewakili permintaan yang dikirim oleh klien dan yang lainnya mewakili respons untuk menulis kembali ke klien. Mari kita lihat parameter permintaan.
Permintaan adalah contoh dari http.IncomingMessage . Melalui contoh ini, kita bisa mendapatkan parameter permintaan, seperti metode http, versi http, url, header, dll. API spesifik ada di sini: https://nodejs.org/api/http.html#http_http_incomingmessage.
Mari kita lihat dengan memodifikasi HelloWorld.js (Save as HelloWorld2.js). Kodenya adalah sebagai berikut:
// perkenalkan modul http var http = membutuhkan ("http"); // Buat server, menentukan fungsi yang menangani permintaan klien http.createServer (function (request, response) {console.log ("Metode -" + request.method); console.log ("versi -" + request.httpversion); console.log ("url -" + request.url); response.write); Console.log ("url -" + request.url); response); response); response.write ("Hello World!"); Console.log ("Halo Dunia Mulai Dengarkan di Port 8000");Seperti yang Anda lihat, saya menggunakan objek konsol untuk mengeluarkan beberapa informasi debugging dan metode HTTP, versi, URL, dan informasi lainnya. Anda dapat mengeksekusi node helloWorld2.js, browser mengunjungi http: // localhost: 8000, dan kemudian dijalankan ke baris perintah untuk melihat informasi apa yang dimaksud dengan output. Saya seperti ini:
HelloWorld sederhana kami sudah dapat mengirim beberapa data respons ke klien, dan Anda dapat melihat kata -kata "Hello World!" di browser Anda. Respons ini dikirim ke klien melalui response instance dari http.ServerResponse .
http.ServerResponse juga merupakan Stream atau eventemitter. Melalui itu, kami mengembalikan kode status HTTP, data, header HTTP, dan informasi lainnya kepada klien.
Modul http
Dalam modul http node.js, baris status ditulis kepada klien melalui metode writeHead dari http.serverresponse. Prototipe metode writeHead adalah sebagai berikut:
response.writeHead (statuscode [, statusmessage] [, header])
Parameter pertama dari metode ini adalah StatusCode, yang merupakan angka seperti 200 dan 403. Parameter yang tersisa adalah opsional. Parameter terakhir adalah header, di mana Anda dapat menggunakan notasi objek JSON untuk menulis beberapa header http, seperti: {“Content-Type”:”text/plain”,”Content-Length”:11} . Parameter Opsional pertama StatusMessage digunakan untuk menentukan pesan deskripsi status, yang tidak dapat diisi.
Header http
Headernya adalah beberapa pasangan nilai kunci. Misalnya, "tipe konten" yang kita lihat di HelloWorld adalah tag header yang digunakan untuk menunjukkan tipe data, yang mungkin sesuai dengan file teks, gambar, video, biner, dll. Demikian pula, "panjang konten" digunakan untuk menentukan panjang data. Ada banyak lagi, seperti "tanggal", "koneksi", dll. Silakan merujuk ke tautan sebelumnya.
Header juga dapat diatur secara terpisah menggunakan metode response.setHeader(name, value) dari http.serverresponse, dan satu header http dapat diatur pada satu waktu.
data
Setelah header, ada data. Beberapa kode status, seperti 200, akan memiliki beberapa data di masa depan. Dan beberapa, seperti 301, 404, 403, 500, kebanyakan dari mereka tidak memiliki data.
Data ditulis kembali ke klien melalui metode tulis http.serverresponse, misalnya:
response.setHeader ("tipe konten", "teks/html");Di sini kita perlu menyebutkan bahwa ada dua metode pengkodean transmisi data HTTP yang umum:
Setel konten-panjang, transfer data panjang-tetap, atur header penyandian transfer ke chunked, transfer data dalam potongan
Seperti contoh HelloWorld kami saat ini, tanpa mengatur header panjang konten, modul http dari node.js default ke pengkodean yang dipotong .
Kami menggunakan alat pengembang Browser Chrome untuk melihat data jaringan, yang dapat dilihat dengan jelas. Seperti yang ditunjukkan pada gambar di bawah ini:
Respons http
Tiga poin yang saya tandai adalah semua informasi header HTTP yang diteruskan ke browser dengan contoh HelloWorld.
Kami menulis data kepada klien melalui metode tulis http.serverresponse. Anda dapat menulis semua data sekaligus, atau Anda dapat menulis data secara terpisah dan beberapa kali. Ketika jumlah data yang akan ditransfer besar, menulis dalam beberapa kali adalah pendekatan yang lebih masuk akal. Misalnya, jika Anda mengirim file besar ke klien, itu lebih cocok untuk menulis dalam beberapa kali. Anda juga dapat menggunakan fitur asinkron Node.js untuk mendapatkan kinerja yang baik.