1. การวิเคราะห์เปิด
บทความนี้พูดถึงโมดูลทั้งสามนี้เข้าด้วยกันเพราะมีความยาวไม่นานและประการที่สองมีการพึ่งพาระหว่างพวกเขาดังนั้นพวกเขาจึงได้รับการแนะนำและวิเคราะห์ตามลำดับ ฉันจะไม่พูดเรื่องไร้สาระมากนักโปรดดูเอกสารต่อไปนี้:
(1), "URL Module"
ให้ฉันมีเกาลัดเล็กน้อย:
การคัดลอกรหัสมีดังนี้:
var url = ต้องการ ('url');
var queryUrl = "http: // localhost: 8888/bb? name = bigbear & memo = helloWorld";
console.log (typeof url.parse (queryurl));
console.log (url.parse (queryurl));
ผลการทำงาน:
การคัดลอกรหัสมีดังนี้:
วัตถุ // typeof
-
โปรโตคอล: 'http:',
Slashes: จริง
Auth: Null,
โฮสต์: 'localhost: 8888',
พอร์ต: '8888'
ชื่อโฮสต์: 'localhost',
แฮช: เป็นโมฆะ
ค้นหา: '? name = bigbear & memo = helloWorld'
แบบสอบถาม: 'name = bigbear & memo = helloWorld'
ชื่อพา ธ : '/bb'
เส้นทาง: '/bb? name = bigbear & memo = helloWorld'
href: 'http: // localhost: 8888/bb? name = bigbear & memo = helloWorld'
-
อธิบายดังนี้:
โปรโตคอล: ร้องขอโปรโตคอล
โฮสต์: ชื่อโฮสต์ URL ได้รับการแปลงเป็นตัวพิมพ์เล็กรวมถึงข้อมูลพอร์ต
Auth: ข้อมูลการรับรองความถูกต้องของ URL
ชื่อโฮสต์: ชื่อโฮสต์ของโฮสต์แปลงเป็นตัวพิมพ์เล็ก
พอร์ต: ส่วนหมายเลขพอร์ตของโฮสต์
ชื่อพา ธ : ส่วนเส้นทางของ URL ซึ่งอยู่หลังจากชื่อโฮสต์ก่อนที่จะมีการร้องขอแบบสอบถาม
ค้นหา: ส่วนสตริงแบบสอบถามของ URL รวมถึงเครื่องหมายคำถามที่จุดเริ่มต้น
เส้นทาง: ชื่อพา ธ และการค้นหาเชื่อมต่อกัน
แบบสอบถาม: สอบถามส่วนพารามิเตอร์ (ส่วนหนึ่งของสตริงหลังจากเครื่องหมายคำถาม) หรือใช้ querystring.parse () เพื่อแยกวัตถุที่ส่งคืน
แฮช: ส่วนต่อไปนี้ของ URL " #" (รวมถึง # symbol)
API เสริม: "url.format (urlobj)"
ฟังก์ชั่น: ป้อนวัตถุ URL เพื่อส่งคืนสตริง URL ที่จัดรูปแบบ
(2), "โมดูล QueryString"
โมดูล "QueryString" ใช้ในการแปลงสตริงพารามิเตอร์ URL และวัตถุพารามิเตอร์ให้กันและกันดังที่แสดงด้านล่าง:
การคัดลอกรหัสมีดังนี้:
var url = ต้องการ ('url');
var qs = ต้องการ ('querystring');
var queryUrl = "http: // localhost: 8888/bb? name = bigbear & memo = helloWorld";
queryUrl = url.parse (queryUrl) .Query;
console.log (queryurl);
console.log (qs.parse (queryurl));
ผลการดำเนินการมีดังนี้:
การคัดลอกรหัสมีดังนี้:
ชื่อ = bigbeare & memo = helloWorld
-
ชื่อ: 'bigbear',
บันทึก: 'HelloWorld'
-
API เพิ่มเติม:
querystring.stringify (obj, [ก.ย. ], [eq]) ----- ทำให้วัตถุเป็นอนุกรมกับสตริงการสืบค้น
คุณสามารถเลือกได้ว่าจะแทนที่ตัวแยกเริ่มต้น ('&') และจัดสรร ('=')
querystring.stringify ({foo: 'bar', baz: 'qox'}, ';', ':') // ส่งคืนสตริงต่อไปนี้ 'foo: bar; baz: qox'
querystring.parse (str, [ก.ย. ], [eq], [ตัวเลือก]) ----- deserialize สตริงการสืบค้นลงในวัตถุ คุณสามารถเลือกได้ว่าจะแทนที่ตัวแยกเริ่มต้น ('&') และจัดสรร ('=')
วัตถุตัวเลือกอาจมีแอตทริบิวต์ MaxKeys (ค่าเริ่มต้นคือ 1,000) ซึ่งสามารถใช้เพื่อ จำกัด จำนวนคีย์ที่ประมวลผล การตั้งค่าเป็น 0 สามารถลบจำนวนคีย์ได้
ตัวอย่าง: querystring.parse ('foo = bar & baz = qox & baz = quux & corge') // {foo: 'bar', baz: ['qox', 'quux'], corge: ''}
(3), "Path Module"
โมดูลนี้มีชุดเครื่องมือสำหรับการประมวลผลและแปลงเส้นทางไฟล์ เกือบทุกวิธีจะแปลงสตริงเท่านั้นและระบบไฟล์จะไม่ตรวจสอบว่าเส้นทางนั้นเป็นจริงหรือไม่
ก่อนอื่นมีเกาลัดง่าย ๆ :
การคัดลอกรหัสมีดังนี้:
var url = ต้องการ ('url');
var qs = ต้องการ ('querystring');
var path = ต้องการ ("เส้นทาง");
var queryUrl = "http: // localhost: 8888/bb? name = bigbear & memo = helloWorld";
var root = path.basename (queryUrl);
console.log (รูท); // bb? name = bigbear & memo = helloWorld
ส่งคืนส่วนสุดท้ายของเส้นทางแยกด้วย "/"
การคัดลอกรหัสมีดังนี้:
var url = ต้องการ ('url');
var qs = ต้องการ ('querystring');
var path = ต้องการ ("เส้นทาง");
var queryUrl = "http: // localhost: 8888/bb? name = bigbear & memo = helloWorld";
var root = path.basename (queryUrl);
console.log (รูท); // bb? name = bigbear & memo = helloWorld
var ext = path.extName (root);
console.log (ext || "ไม่ใช่ชื่อ ext!"); // ไม่ใช่ชื่อต่อ!
เนื่องจาก API มากเกินไปมีเพียงไม่กี่คนที่ใช้กันทั่วไปเท่านั้นที่อยู่ด้านบนและทุกคนต้องอ่านเอกสารอย่างระมัดระวัง
2. เกาลัดที่ครอบคลุม
คำอธิบายสถานการณ์ ---- เซิร์ฟเวอร์ได้รับคำขอจากสถานการณ์ที่แตกต่างกันและดำเนินการประมวลผลที่แตกต่างกันผ่าน "URL" รหัสมีดังนี้:
(1), สร้าง "index.html"
การคัดลอกรหัสมีดังนี้:
<! doctype html>
<html>
<head>
<title> bigbear </title>
<meta content = "ie = 8" http-equiv = "x-ua เข้ากันได้"/>
<meta http-equiv = "content-type" content = "text/html; charset = utf-8">
<style type = "text/css">
Div {
ระยะขอบด้านบน: 50px;
ความกว้าง: 100%;
มาร์จิ้น: 0px;
ความสูง: 120px;
ความสูงของสาย: 120px;
สี: #FFFF;
ขนาดตัวอักษร: 22px;
ความเป็นมา:#FF9900;
TEXT-ALIGN: CENTER;
-
</style>
<script src = "index.js"> </script>
</head>
<body>
<div> สวัสดี Big Bear! </div>
</body>
</html>
(2), สร้าง "index.js"
การแจ้งเตือน ("สวัสดี BB!"); // เพียงหนึ่งประโยคของรหัสเพื่อทดสอบ
(3) สร้าง "server.js"
การคัดลอกรหัสมีดังนี้:
var http = ต้องการ ("http");
var fs = ต้องการ ('fs');
var url = ต้องการ ('url');
var path = ต้องการ ("เส้นทาง");
http.createserver (ฟังก์ชั่น (คำขอ, การตอบกลับ) {
วิธี var = request.method;
method = method.toLowerCase ();
var filename = path.basename (request.url);
var extName = path.extName (ชื่อไฟล์);
var root = "./";
if ("get" == วิธี) {
ถ้า (extName) {
fs.readfile ("./" + ชื่อไฟล์ "UTF-8", ฟังก์ชั่น (ข้อผิดพลาด, ข้อมูล) {
ถ้า (ข้อผิดพลาด) โยนข้อผิดพลาด;
Response.writehead (200, {
"ประเภทเนื้อหา": {
".css": "ข้อความ/css",
".js": "แอปพลิเคชัน/JavaScript"
} [extname]
-
Response.write (ข้อมูล);
Response.end ();
-
-
อื่น{
fs.readfile (root + "index.html", "UTF-8", ฟังก์ชั่น (ข้อผิดพลาด, ข้อมูล) {
ถ้า (ข้อผิดพลาด) โยนข้อผิดพลาด;
Response.writehead (200, {
"ประเภทเนื้อหา": "ข้อความ/html"
-
Response.write (ข้อมูล);
Response.end ();
-
-
-
อื่นถ้า ("โพสต์" == request.url) {
// จัดการโพสต์ที่นี่
-
}). ฟัง (8888);
console.log ("เว็บเซิร์ฟเวอร์ทำงาน, พอร์ตเปิด ---> 8888");
เรียกใช้ Node Server.js
สามกันมาสรุปกันเถอะ
(1) เข้าใจการเชื่อมต่อระหว่างสามโมดูลข้างต้นและใช้งานได้อย่างยืดหยุ่น
(2) มีความเชี่ยวชาญในการใช้ URL APIs "URL", QueryString และ Path "สามโมดูล"
(3) และในที่สุดก็เน้น: ทำความเข้าใจกับความตั้งใจของรหัสในตัวอย่างข้างต้น refactor และสรุปอย่างต่อเนื่อง