คำนำ
ถ้าเราไม่ได้เรียนรู้ nodejs เราจะแก่ขึ้น ... เมื่อคลื่น HTML5 ตีบรรพบุรุษหลายคนเริ่มต้นการเดินทางของพวกเขาและในเวลานั้นฉันยังคงทำงานในโปรแกรมฝั่งเซิร์ฟเวอร์
ต่อมาฉันเปลี่ยนไปเป็นส่วนหน้าและระยะห่างระหว่างมันกับตัวตึกมีขนาดใหญ่มากแล้ว เนื่องจากฉันรู้จักภาษาฝั่งเซิร์ฟเวอร์และทำงานเป็นเวลานานฉันจึงเริ่มเรียนรู้ nodejs และย้ายไปยังส่วนหน้าสมบูรณ์
เวลานี้แผนการเรียนรู้ nodejs คือ:
①เรียนรู้ความรู้พื้นฐานใน 1-2 สัปดาห์
②การพัฒนาโครงการง่าย ๆ ในเวลาประมาณ 1 สัปดาห์
③ใช้ nodejs เพื่อพัฒนาชุดเครื่องมือสำหรับการดีบักมือถือ
④เกี่ยวข้องกับบรรจุภัณฑ์ (อาจอยู่ไกล)
คุณสมบัติ nodejs
①อะซิงโครนัส
NodeJs ทั้งหมดเสร็จสมบูรณ์แบบอะซิงโครนัสจากการอ่านไฟล์ไปยังคำขอเครือข่ายและฟังก์ชั่นการโทรกลับมีบทบาทสำคัญ Node เป็นรุ่นโปรแกรมชั้นนำ
②การโทรกลับเหตุการณ์
การโทรกลับของเหตุการณ์ทำให้โปรแกรมมีน้ำหนักเบา แต่ความจำเพาะขึ้นอยู่กับโปรแกรมเมอร์ อย่างไรก็ตามฟังก์ชั่นการโทรกลับค่อนข้างยากที่จะอ่าน
③เกลียวเดี่ยว
โหนดเป็นเธรดเดี่ยว หากเป็นแบบมัลติเธรดภาษานี้จะลึกขึ้น มันน่ารำคาญมากที่จะถามคำถามสองสามข้อเกี่ยวกับการสื่อสารในกระบวนการ แต่เธรดไม่มีการหยุดชะงักหรือปัญหาอื่น ๆ
แต่มีปัญหาเกี่ยวกับความเกี่ยวข้องกับประสิทธิภาพเนื่องจากไม่สามารถใช้มัลติคอร์ได้
กลไกโมดูล/CommonJS
เราเคยทำการพัฒนาฝั่งเซิร์ฟเวอร์ หากเราไม่มีรหัสองค์กรที่ดีมันจะยากมากที่จะรักษาในภายหลังดังนั้นสถาปัตยกรรม MVC และสามชั้นจะอยู่ที่นั่น?
ตอนนี้ตรรกะทางธุรกิจของส่วนหน้าค่อยๆขยับเข้าใกล้ส่วนหลังมากขึ้น สำหรับแอปพลิเคชันหน้าเดียวมันเกินตรรกะของโปรแกรมของ back-end
การเพิ่มขึ้นอย่างต่อเนื่องในการดูหน้าเว็บจะนำไปสู่การเพิ่มขึ้นของจำนวนรหัส JS วิธีการจัดการรหัสส่วนหน้าของเราได้กลายเป็นปัญหาดังนั้นต้องการให้ต้องการ Js ...
PS: ประณามช่วงเวลานี้มีความสัมพันธ์เล็กน้อยกับ nodejs ...
JavaScript ไม่มีระบบแบบแยกส่วนดังนั้น CommonJS ที่เสนอเพื่อให้ JS เป็นพื้นฐานสำหรับการพัฒนาแอปพลิเคชันขนาดใหญ่
การอ้างอิงโมดูล
หากเราต้องการอ้างอิงโมดูลเช่นการคำนวณทางคณิตศาสตร์ที่เกี่ยวข้อง:
var math = ต้องการ ('คณิตศาสตร์');
คำจำกัดความของโมดูล
หากเราต้องการกำหนดโมดูลของเราเองเราสามารถทำได้
การคัดลอกรหัสมีดังนี้:
exports.add = function () {
ผลรวมกลับ;
-
หากฟังก์ชั่นนี้ถูกกำหนดในคณิตศาสตร์ก็สามารถใช้งานได้
Math.add ();
รหัสโมดูล
ตัวระบุโมดูลคือพารามิเตอร์ที่ส่งผ่านไปยังต้องการ จะต้องมีการตั้งชื่อสำหรับอูฐและชี้ไปที่เส้นทางไฟล์ มันคล้ายกับ reedjs มากที่นี่
การใช้งานโมดูล
การใช้โมดูลโหนดแบ่งออกเป็นสองประเภท: หนึ่งคือโมดูลหลักระดับระบบและอีกอันคือโมดูลไฟล์ที่เขียนโดยผู้ใช้
โมดูลหลักถูกแปลเป็นไฟล์ไบนารีในระหว่างกระบวนการรวบรวม หลังจากเริ่มกระบวนการโหนดแล้วโมดูลหลักบางอย่างจะถูกโหลดลงในหน่วยความจำโดยตรง (ตำแหน่งไฟล์การรวบรวมและการดำเนินการ)
โมดูลไฟล์จะต้องโหลดแบบไดนามิกและความเร็วค่อนข้างช้า
อย่างไรก็ตามเมื่อโหลดแล้วไฟล์เหล่านั้นจะถูกแคชและไฟล์แคช (ไฟล์ที่รวบรวม) จะถูกอ่านเมื่อนำเข้าอีกครั้ง (ไฟล์ที่รวบรวม)
มาคุยกันอีกหน่อยที่นี่ เมื่อเราใช้ขีดล่างเราจะรวบรวม HTML เพื่อสร้างฟังก์ชันเทมเพลต (เป็นเพียงแค่ฟังก์ชั่น) ในความเป็นจริงสิ่งนี้สามารถแคชได้
บันทึกฟังก์ชั่นที่คอมไพล์ก่อนที่จะปรับใช้โครงการและลบไฟล์เทมเพลต HTML (ฉันไม่ทราบเอฟเฟกต์การเพิ่มประสิทธิภาพ)
ในโหนดแต่ละโมดูลเป็นวัตถุ:
การคัดลอกรหัสมีดังนี้:
โมดูลฟังก์ชั่น (ID, PARTE) {
this.id = id;
this.exports = {};
// parent เป็นคำหลักไม่ควรใช้แบบสุ่ม
this.parent = Parent;
if (parent && parent.children) {
parent.children.push (นี่);
-
this.filename = null;
this.loaded = false;
this.children = [];
-
ขั้นตอนสุดท้ายของการแนะนำโมดูลไฟล์ในระหว่างการรวบรวมและการดำเนินการ หลังจากค้นหาไฟล์เฉพาะโหนดจะสร้างวัตถุโมดูลใหม่จากนั้นโหลดและรวบรวมตามเส้นทาง
แต่ละโมดูลที่รวบรวมได้สำเร็จจะแคชพา ธ ไฟล์เป็นดัชนีบนโมดูล. _cache
แต่ละไฟล์โมดูลมีตัวแปรสามตัว: ต้องการการส่งออกและโมดูล แต่ไม่ได้กำหนดไว้ในไฟล์ (ตัวแปร __filename__ และ __dirname__ ก็เป็นเช่นกัน)
ในความเป็นจริงในระหว่างกระบวนการรวบรวมโหนดจะห่อเนื้อหาของหัวไฟล์ JavaScript (เทียบเท่ากับการส่งฟังก์ชั่นที่กำหนดเองเข้าไปในหน้าต่าง)
การคัดลอกรหัสมีดังนี้:
(ฟังก์ชั่น (การส่งออก, ต้องการ, โมดูล, __filename__, __dirname__) {
var math = ต้องการ ('คณิตศาสตร์');
exports.area = ฟังก์ชั่น (รัศมี) {
กลับ '';
-
-
ด้วยวิธีนี้โมดูลจะถูกแยกและจะไม่ส่งผลต่อกันและกัน มันค่อนข้างคล้ายกับการรวบรวมขีดล่าง ...
แพ็คเกจและ NPM
โหนดจัดโมดูลหลักของตัวเองดังนั้นโมดูลไฟล์บุคคลที่สามสามารถเขียนและใช้ในลักษณะที่เป็นระเบียบ แต่ในโมดูลบุคคลที่สามโมดูลยังคงถูกแฮชในสถานที่ต่าง ๆ
ไม่สามารถอ้างอิงได้โดยตรงระหว่างกัน ในโมดูลเอาท์ซอร์สและ NPM เป็นกลไกในการสร้างการเชื่อมต่อ
PS: โมดูลจำนวนมากจะเป็นแพ็คเกจ แนวคิดของแพ็คเกจนี้คล้ายกับแพ็คเกจ Java
หลังจากการบีบอัดของโครงสร้างแพ็คเกจจะมีการสร้างไฟล์หลายไฟล์:
① package.json คำอธิบายไฟล์
② Bin Directory Binary Executable
③ lib lib javascript code directory
④เอกสารเอกสาร (ไม่มีอยู่จริงโดยทั่วไป)
⑤ทดสอบสาธิต
ข้างต้นเป็นข้อกำหนดบางประการของแพ็คเกจ CommonJS แต่เราสามารถเรียนรู้เล็กน้อย (ผู้เริ่มต้น) และ NPM จำเป็นต้องมีความเชี่ยวชาญในนั้น ด้วยความช่วยเหลือของ NPM เราสามารถมีความเชี่ยวชาญในการติดตั้งแพ็คเกจการจัดการ
ติดตั้งแพ็คเกจการพึ่งพา
การติดตั้งแพ็คเกจการพึ่งพาเป็นวิธีทั่วไป:
NPM ติดตั้ง Express
หลังจากดำเนินการไดเรกทอรี Node_Modules จะถูกสร้างขึ้นในไดเรกทอรีปัจจุบันจากนั้นไดเรกทอรีด่วนจะถูกสร้างขึ้นด้านล่าง ...
PS: Express เป็นกรอบการพัฒนาเว็บยอดนิยมบน NodeJS ช่วยให้เราพัฒนาเว็บแอปพลิเคชันได้อย่างรวดเร็ว
หลังจากการติดตั้งเสร็จสมบูรณ์สามารถเรียกได้ว่า:
การคัดลอกรหัสมีดังนี้:
var express = ต้องการ ('ด่วน');
บทสรุป
ส่วนนี้จบลงแล้วและกระบวนการต่อสู้จริงของโครงการของเราจะค่อยๆลึกขึ้น