สัปดาห์นี้โครงการได้กระจัดกระจาย (ควรจะบอกว่ามันเป็นเช่นนี้เสมอ) บทสรุปควรเปิดสองครั้งตามสถานการณ์ที่แตกต่างกัน ~ บทความนี้บันทึกสรุปการเรียนรู้เกี่ยวกับโหนดและบทความถัดไปคือความรู้เกี่ยวกับส่วนหน้าของเว็บที่เรียนรู้จากโครงการ
1. http
โมดูล HTTP ของโหนดถูกเปิดเผยในบทความแรก ที่นี่เราจะได้เรียนรู้ APIs ที่ปรากฏในกิจวัตรหลายครั้ง
การคัดลอกรหัสมีดังนี้:
var qs = ต้องการ ('querystring');
ต้องการ ('http'). createserver (ฟังก์ชั่น (req, res) {
if ('/' == req.url) {
res.writehead (200, {'content-type': 'text/html'});
res.end ([
'<method form = "post" action = "/url">'
'<H1> แบบฟอร์มของฉัน </h1>'
'<FieldSet>',
'<label> ข้อมูลส่วนบุคคล </label>'
'<p> คุณชื่ออะไร </p>'
'<อินพุต type = "text" name = "name">'
'<p> <pution> ส่ง </button> </p>'
'</form>',
].เข้าร่วม(''));
} อื่นถ้า ('/url' == req.url && 'โพสต์' == req.method) {
var body = '';
req.on ('data', ฟังก์ชั่น (ก้อน) {
ร่างกาย += ก้อน;
-
req.on ('end', function () {
res.writehead (200, {'content-type': 'text/html'});
Res.end ('<b> ชื่อของคุณคือ <b>' + qs.parse (body) .name + '</b> </p>');
-
}อื่น{
res.writehead (404);
Res.end ('ไม่พบ');
-
}). ฟัง (3000);
พารามิเตอร์ของฟังก์ชั่น creatserver ([requestListener]) เป็นฟังก์ชั่นการเรียกกลับ (REQ, RES) โดยที่ REQ (คำขอคำขอ) เป็นอินสแตนซ์ของ http.incomingMessage และ res (การตอบสนอง) เป็นอินสแตนซ์ของ http.serverrrsponse
เราใช้ URL, สตริงวิธีการของ RES และสองวิธีการเขียนและสิ้นสุด ตามชื่อหมายถึง URL คือ URL ที่บันทึก HTTP (ทุกอย่างหลังจากชื่อโฮสต์) และวิธีการเป็นวิธีที่บันทึกการตอบสนอง HTTP
Writehead (StatusCode, [เหตุผล], [ส่วนหัว]) ใช้เพื่อส่งข้อมูลส่วนหัวตอบกลับ HTTP วิธีนี้เรียกว่าเพียงครั้งเดียวเมื่อข้อความมาถึงและจะต้องเรียกก่อนวิธีการเช่นสิ้นสุด หากคุณทำแทนให้เรียกใช้วิธีการเขียน (chunk, [การเข้ารหัส]) หรือสิ้นสุด ([ข้อมูล], [การเข้ารหัส]) ก่อนหน้านี้ระบบจะบันทึกเนื้อหาส่วนหัวของการตอบกลับ (มองไม่เห็นไม่สามารถเปลี่ยนแปลงได้) โดยอัตโนมัติและเรียกใช้วิธีการเขียน
วิธีการสิ้นสุดจะส่งข้อความไปยังเซิร์ฟเวอร์เพื่อระบุว่าการตอบกลับถูกส่งดังนั้นวิธีนี้จะต้องเรียกว่าทุกครั้งที่ส่งการตอบกลับ เมื่อพารามิเตอร์ของมันมีเนื้อหา (เช่นรูทีน) วิธีนี้เทียบเท่ากับการเรียกทั้งสองเขียน ('เนื้อหา', [การเข้ารหัส]) และวิธีการสิ้นสุด มันค่อนข้างสะดวก
ถัดไปรูทีนใช้ req.on เพื่อฟังเหตุการณ์และผูกกับ REQ (ข้อความ) ต้นแบบของมันคือ emitter.on (เหตุการณ์, ผู้ฟัง), REQ เป็นวัตถุที่สร้างเหตุการณ์และในฟังก์ชั่นการฟังสิ่งนี้ชี้ไปที่วัตถุเหตุการณ์ที่เกี่ยวข้องกับฟังก์ชั่นการฟังปัจจุบัน