1. Analisis pembukaan
Artikel ini berbicara tentang ketiga modul ini bersama -sama karena panjangnya tidak terlalu panjang, dan kedua, ada ketergantungan di antara mereka, sehingga mereka diperkenalkan dan dianalisis secara berurutan. Saya tidak akan mengatakan banyak omong kosong, silakan lihat dokumen berikut:
(1), "Modul URL"
Biarkan saya memiliki sedikit kastanye:
Salinan kode adalah sebagai berikut:
var url = membutuhkan ('url');
var queryurl = "http: // localhost: 8888/bb? name = Bigbear & memo = helloWorld";
console.log (typeof url.parse (queryurl));
console.log (url.parse (queryurl));
Hasil Menjalankan:
Salinan kode adalah sebagai berikut:
objek // typeof
{
Protokol: 'http:',
Slash: Benar,
AUTH: NULL,
Tuan rumah: 'Localhost: 8888',
Port: '8888',
Nama host: 'localhost',
Hash: NULL,
Cari: '? Name = Bigbear & Memo = HelloWorld',
Kueri: 'Name = Bigbear & Memo = HelloWorld',
pathname: '/bb',
Path: '/bb? Name = Bigbear & Memo = HelloWorld',
href: 'http: // localhost: 8888/bb? name = bigbear & memo = helloWorld'
}
Jelaskan sebagai berikut:
Protokol: Minta Protokol
Host: Nama host URL telah dikonversi menjadi huruf kecil, termasuk informasi port
AUTH: Bagian Informasi Otentikasi dari URL
Hostname: Bagian nama host dari host, dikonversi menjadi huruf kecil
Port: Bagian nomor port dari host
Pathname: Bagian jalur URL, yang terletak setelah nama host sebelum kueri diminta
Cari: Bagian string kueri URL, termasuk tanda tanya di awal.
Path: Pathname dan pencarian terhubung.
Kueri: Permintaan bagian parameter (bagian dari string setelah tanda tanya), atau gunakan querystring.parse () untuk menguraikan objek yang dikembalikan.
Hash: bagian berikut dari URL " #" (termasuk simbol #)
API Tambahan: "Url.Format (Urlobj)"
Fungsi: Masukkan objek URL untuk mengembalikan string URL yang diformat.
(2), "Modul QueryString"
Modul "QueryString" digunakan untuk mengonversi string parameter URL dan objek parameter satu sama lain, seperti yang ditunjukkan di bawah ini:
Salinan kode adalah sebagai berikut:
var url = membutuhkan ('url');
var qs = membutuhkan ('querystring');
var queryurl = "http: // localhost: 8888/bb? name = Bigbear & memo = helloWorld";
queryurl = url.parse (queryurl) .query;
console.log (queryurl);
console.log (qs.parse (queryurl));
Hasil operasi adalah sebagai berikut:
Salinan kode adalah sebagai berikut:
name = BigBear & Memo = HelloWorld
{
Nama: 'Bigbear',
Memo: 'HelloWorld'
}
API Tambahan:
queryString.stringify (obj, [sep], [eq]) ----- serialisasi objek ke string kueri.
Anda dapat memilih apakah akan mengganti splitter default ('&') dan Allocator ('=').
queryString.stringify ({foo: 'bar', baz: 'qox'}, ';', ':') // kembalikan string berikut 'foo: bar; baz: qx'
queryString.parse (str, [sep], [eq], [opsi]) ----- deserialize string kueri ke dalam suatu objek. Anda dapat memilih apakah akan mengganti splitter default ('&') dan Allocator ('=').
Objek opsi dapat berisi atribut maxkeys (default adalah 1000), yang dapat digunakan untuk membatasi jumlah kunci yang diproses. Mengaturnya ke 0 dapat menghapus jumlah tombol.
Contoh: queryString.parse ('foo = bar & baz = qux & baz = quux & corge') // {foo: 'bar', baz: ['qux', 'quux'], corte: ''}
(3), "Modul Path"
Modul ini berisi satu set alat untuk memproses dan mengonversi jalur file. Hampir semua metode hanya mengonversi string, dan sistem file tidak akan memeriksa apakah jalurnya benar atau tidak.
Pertama -tama mari memiliki kastanye sederhana:
Salinan kode adalah sebagai berikut:
var url = membutuhkan ('url');
var qs = membutuhkan ('querystring');
var path = membutuhkan ("path");
var queryurl = "http: // localhost: 8888/bb? name = Bigbear & memo = helloWorld";
var root = path.basename (queryUrl);
console.log (root); // BB? Name = Bigbear & Memo = HelloWorld
Mengembalikan bagian terakhir dari jalan setapak, dibagi dengan "/"
Salinan kode adalah sebagai berikut:
var url = membutuhkan ('url');
var qs = membutuhkan ('querystring');
var path = membutuhkan ("path");
var queryurl = "http: // localhost: 8888/bb? name = Bigbear & memo = helloWorld";
var root = path.basename (queryUrl);
console.log (root); // BB? Name = Bigbear & Memo = HelloWorld
var ext = path.extName (root);
console.log (ext || "Bukan nama ext!"); // bukan nama ext!
Karena terlalu banyak API, hanya beberapa yang umum digunakan yang tercantum di atas, dan semua orang perlu membaca dokumen dengan cermat.
2. Chestnut komprehensif
Deskripsi Skenario ---- Server menerima permintaan dari berbagai situasi dan melakukan pemrosesan yang berbeda melalui "URL". Kodenya adalah sebagai berikut:
(1), buat "index.html"
Salinan kode adalah sebagai berikut:
<! Doctype html>
<Html>
<head>
<title> bigbear </iteme>
<meta content = "ie = 8" http-equiv = "x-ua-kompatibel"/>
<meta http-equiv = "konten tipe" content = "text/html; charset = utf-8">
<type style = "text/css">
Div {
margin-top: 50px;
Lebar: 100%;
margin: 0px;
Tinggi: 120px;
Line-Height: 120px;
Warna: #FFFF;
Ukuran font: 22px;
Latar Belakang:#FF9900;
Teks-Align: tengah;
}
</tyle>
<skrip src = "index.js"> </script>
</head>
<body>
<div> halo, beruang besar! </div>
</body>
</html>
(2), buat "index.js"
peringatan ("Halo BB!"); // Hanya satu kalimat kode untuk diuji
(3) Buat "server.js"
Salinan kode adalah sebagai berikut:
var http = membutuhkan ("http");
var fs = membutuhkan ('fs');
var url = membutuhkan ('url');
var path = membutuhkan ("path");
http.createServer (function (request, response) {
var metode = request.method;
Method = Method.TolowerCase ();
var filename = path.basename (request.url);
var extname = path.extName (fileName);
var root = "./";
if ("get" == metode) {
if (extName) {
fs.readfile ("./" + nama file, "utf-8", fungsi (kesalahan, data) {
if (error) lempar kesalahan;
response.writeHead (200, {
"Tipe konten": {
".css": "teks/css",
".js": "Application/JavaScript"
} [extname]
});
response.write (data);
response.end ();
});
}
kalau tidak{
fs.readfile (root + "index.html", "utf-8", function (error, data) {
if (error) lempar kesalahan;
response.writeHead (200, {
"Tipe konten": "teks/html"
});
response.write (data);
response.end ();
});
}
}
lain jika ("post" == request.url) {
// Tangani posting di sini
}
}). Dengarkan (8888);
Console.log ("Server Web berjalan, port di ---> 8888");
Jalankan Node Server.js.
Tiga, mari kita ringkas
(1) Memahami hubungan antara tiga modul di atas dan menggunakannya secara fleksibel.
(2) Mahir dalam menggunakan tiga modul terkait API "URL, QueryString, dan Path".
(3), dan akhirnya menekankan: memahami niat kode dalam contoh di atas, terus -menerus refactor dan meringkas.