วิธีเริ่มต้นใช้งาน VUE3.0 อย่างรวดเร็ว: ไปที่การศึกษา
1.1 การทำให้เป็นโมดูลคืออะไร
การทำให้เป็นโมดูลหมายถึงกระบวนการแบ่งระบบออกเป็นหลายโมดูลทีละชั้นจากบนลงล่างเมื่อแก้ไขปัญหาที่ซับซ้อน สำหรับทั้งระบบ โมดูลคือหน่วยที่สามารถรวม สลายตัว และเปลี่ยนได้
การทำให้เป็นโมดูลในสาขาการเขียนโปรแกรมคือการปฏิบัติตามกฎตายตัวและแยกไฟล์ขนาดใหญ่ออกเป็นโมดูลขนาดเล็กหลายโมดูลที่เป็นอิสระและพึ่งพาซึ่งกันและกัน
ประโยชน์ของการแยกโค้ดออกเป็นโมดูล:
ช่วยเพิ่มความสามารถในการนำโค้ดกลับมาใช้ใหม่ได้
ปรับปรุงการบำรุงรักษาโค้ด
และเปิดใช้งานการโหลดตามความต้องการ
2.1 การจำแนกประเภทของโมดูล
ใน Node.js ขึ้นอยู่กับ ขึ้นอยู่กับ แหล่งที่มาของโมดูล โมดูลแบ่งออกเป็น 3 ประเภทหลักๆ ได้แก่
โมดูลในตัว (โมดูลในตัวได้รับการจัดเตรียมอย่างเป็นทางการโดย Node.js เช่น fs, path, http เป็นต้น)
โมดูลที่กำหนดเอง (แต่ละ . js ที่สร้างโดยผู้ใช้) เป็นโมดูลที่กำหนดเองทั้งหมด)
โมดูลบุคคลที่สาม (โมดูลที่พัฒนาโดยบุคคลที่สามไม่ได้จัดเตรียมโมดูลในตัวอย่างเป็นทางการ และไม่ใช่โมดูลที่กำหนดเองที่สร้างโดยผู้ใช้ และจำเป็นต้องดาวน์โหลดก่อนใช้งาน)
2.2 โหลดโมดูล
โดยใช้เมธอด need() อันทรงพลัง คุณสามารถโหลดโมดูลในตัว โมดูลที่ผู้ใช้กำหนด และโมดูลของบริษัทอื่นที่ต้องการเพื่อใช้งาน ตัวอย่างเช่น:
หมายเหตุ: เมื่อใช้วิธีการ need() เพื่อโหลดโมดูลอื่นๆ โค้ดในโมดูลที่โหลดจะถูกดำเนินการ โดยสามารถละเว้นส่วนต่อท้ายไฟล์ '.js' ได้เมื่อโหลดโมดูลที่กำหนดเอง
2.3 ขอบเขตของโมดูลใน Node.js
ขอบเขตของโมดูลคืออะไร
คล้ายกับขอบเขตของฟังก์ชัน ตัวแปร วิธีการ และสมาชิกอื่นๆ ที่กำหนดไว้ในโมดูลที่กำหนดเองสามารถเข้าถึงได้ภายในโมดูลปัจจุบันเท่านั้น ซึ่งเรียกว่าขอบเขตของโมดูล
ประโยชน์ของขอบเขตโมดูล
ป้องกันปัญหามลพิษตัวแปรทั่วโลก (หากไฟล์ js สองไฟล์ถูกนำเข้าด้วยแท็กสคริปต์และมีการกำหนดตัวแปรเดียวกันในทั้งสองไฟล์ ไฟล์แรกจะถูกเขียนทับโดยไฟล์หลัง)
2.4 การแชร์ขอบเขตโมดูลภายนอกสมาชิก
1 . วัตถุโมดูล
มีวัตถุโมดูลในแต่ละโมดูล .js แบบกำหนดเอง ซึ่งเก็บข้อมูลที่เกี่ยวข้องกับโมดูลปัจจุบัน โดยจะพิมพ์ดังนี้:
2. วัตถุ module.exports
ในโมดูลที่กำหนดเอง คุณสามารถใช้วัตถุ module.exports เพื่อแบ่งปันสมาชิกภายในโมดูลสำหรับการใช้งานภายนอก
เมื่อโลกภายนอกใช้เมธอด need() เพื่อนำเข้าโมดูลแบบกำหนดเอง สิ่งที่ได้รับคืออ็อบเจ็กต์ชี้ไปที่ module.exports
3. ข้อควรทราบเมื่อแชร์สมาชิก:
เมื่อใช้เมธอด need() เพื่อนำเข้าโมดูล ผลลัพธ์การนำเข้าจะขึ้นอยู่กับออบเจ็กต์ที่ module.exports ชี้ไปเสมอ
4. ส่งออกวัตถุ
เนื่องจากคำ module.exports ค่อนข้างซับซ้อนในการเขียน เพื่อลดความซับซ้อนของโค้ดสำหรับการแชร์สมาชิกภายนอก Node จึงเตรียมวัตถุส่งออก ตามค่าเริ่มต้น การส่งออกและ module.exports จะชี้ไปที่วัตถุเดียวกัน ผลลัพธ์ที่ใช้ร่วมกันขั้นสุดท้ายยังคงขึ้นอยู่กับวัตถุที่ module.export ชี้ไป
5. ความเข้าใจผิดในการใช้การส่งออกและ module.exports
โปรดจำไว้เสมอว่าเมื่อจำเป็นต้องใช้ () โมดูล คุณจะได้รับวัตถุที่ชี้ไปโดย module.exports เสมอ:
ความเข้าใจส่วนบุคคล: การส่งออกและ module.exports เดิมชี้ไปที่วัตถุเดียวกัน เพียงติดตั้งข้อมูล มันยังคงชี้ไปที่ออบเจ็กต์เดียวกัน ข้อมูลที่เมาท์โดยการส่งออกสามารถรับได้จากโมดูล need หากฝ่ายหนึ่งกำหนดค่า (ชี้ไปที่วัตถุอื่น พวกเขาจะไม่ชี้ไปที่วัตถุเดียวกัน และโมดูล need ได้รับวัตถุที่ชี้ไปโดย module.exports ดังนั้นเมื่อฝ่ายหนึ่งเปลี่ยนตัวชี้ โมดูล need จะไม่ได้รับ มูลค่าของการส่งออก)
หมายเหตุ: เพื่อป้องกันความสับสน ขอแนะนำว่าคุณอย่าใช้การส่งออกและ module.exports พร้อมกันในโมดูลเดียวกัน
2.5 ข้อกำหนดเฉพาะของโมดูลใน Node.js Node.js เป็นไปตามโมดูลาร์ CommonJS ข้อกำหนด CommonJS กำหนดลักษณะของโมดูลและวิธีที่แต่ละโมดูลโต้ตอบกัน
CommonJS กำหนด:
(1) ภายในแต่ละโมดูล ตัวแปรโมดูลแสดงถึงโมดูลปัจจุบัน
(2) ตัวแปรโมดูลคือวัตถุ และแอตทริบิวต์การส่งออก (เช่น module.exports) คืออินเทอร์เฟซภายนอก
(3) การโหลดโมดูลจะโหลดแอตทริบิวต์ module.exports ของโมดูลจริง ๆ ต้องใช้เมธอด need() เพื่อโหลดโมดูล
3.1 แพ็คเกจ
1. แพ็คเกจคืออะไร
โมดูลบุคคลที่สามใน Node.js เรียกอีกอย่างว่าแพ็คเกจ
เช่นเดียวกับคอมพิวเตอร์และคอมพิวเตอร์ที่อ้างถึงสิ่งเดียวกัน โมดูลและแพ็คเกจของบุคคลที่สามอ้างถึงแนวคิดเดียวกัน แต่มีชื่อต่างกัน
2. แหล่งที่มาของแพ็คเกจ
แตกต่างจากโมดูลในตัวและโมดูลที่กำหนดเองใน Node.js แพ็คเกจนี้ได้รับการพัฒนาโดยบุคคลหรือทีมบุคคลที่สามและทุกคนสามารถใช้ได้ฟรี
หมายเหตุ: แพ็คเกจใน Node.js ทั้งหมดเป็นโอเพ่นซอร์สฟรี และสามารถดาวน์โหลดและใช้งานได้ฟรีโดยไม่ต้องจ่ายเงิน
3. เหตุใดจึงจำเป็นต้องใช้แพ็คเกจ
เนื่องจากโมดูลในตัวของ Node.js มี API ระดับต่ำเพียงบางส่วนเท่านั้น ประสิทธิภาพในการพัฒนาโครงการตามโมดูลในตัวจึงต่ำมาก
แพ็คเกจนี้ถูกห่อหุ้มโดยใช้โมดูลในตัว ซึ่งมอบ API ขั้นสูงและสะดวกสบายยิ่งขึ้น ซึ่งช่วยปรับปรุงประสิทธิภาพการพัฒนาได้อย่างมาก
ความสัมพันธ์ระหว่างแพ็คเกจและโมดูลในตัวนั้นคล้ายคลึงกับความสัมพันธ์ระหว่าง jQuery และ API ของเบราว์เซอร์ในตัว
4. จะดาวน์โหลดแพ็คเกจได้ที่ไหน
มีบริษัท IT ในต่างประเทศชื่อ npm, Inc. บริษัทนี้มีเว็บไซต์ชื่อดัง: www.npmjs.com/ ซึ่งเป็นแพลตฟอร์มแชร์แพ็คเกจที่ใหญ่ที่สุดในโลก คุณสามารถดาวน์โหลดได้จากที่นี่ เว็บไซต์ ค้นหาแพ็คเกจที่คุณต้องการ ตราบใดที่คุณมีความอดทนเพียงพอ!
จนถึงขณะนี้ นักพัฒนามากกว่า 11 ล้านคนทั่วโลกได้พัฒนาและแบ่งปันแพ็คเกจมากกว่า 1.2 ล้านแพ็คเกจสำหรับการใช้งานของเราผ่านแพลตฟอร์มแบ่งปันแพ็คเกจนี้ npm, Inc. มีเซิร์ฟเวอร์ที่ register.npmjs.org/ เพื่อแชร์แพ็คเกจทั้งหมดกับภายนอก เราสามารถดาวน์โหลดแพ็คเกจที่เราต้องการได้จากเซิร์ฟเวอร์นี้
หมายเหตุ:
ค้นหาแพ็คเกจที่คุณต้องการจากเว็บไซต์ www.npmjs.com/
และดาวน์โหลดแพ็คเกจที่คุณต้องการจากเซิร์ฟเวอร์ register.npmjs.org/
5. วิธีดาวน์โหลดแพ็คเกจ
npm, Inc. ทางบริษัทจัดให้มีเครื่องมือจัดการแพ็คเกจ เราสามารถใช้เครื่องมือการจัดการแพ็คเกจนี้เพื่อดาวน์โหลดแพ็คเกจที่ต้องการจากเซิร์ฟเวอร์ register.npmjs.org/ ไปยังการใช้งานในเครื่อง
ชื่อของเครื่องมือการจัดการแพ็คเกจนี้คือ Node Package Manager (เรียกว่าเครื่องมือการจัดการแพ็คเกจ npm) เครื่องมือการจัดการแพ็คเกจนี้ได้รับการติดตั้งบนคอมพิวเตอร์ของผู้ใช้พร้อมกับแพ็คเกจการติดตั้ง Node.js
คุณสามารถดำเนินการคำสั่ง npm -v ในเทอร์มินัลเพื่อตรวจสอบหมายเลขเวอร์ชันของเครื่องมือการจัดการแพ็คเกจ npm ที่ติดตั้งบนคอมพิวเตอร์ของคุณ:
3.2 ประสบการณ์ครั้งแรกกับ npm
1. คำสั่งเพื่อติดตั้งแพ็คเกจในโปรเจ็กต์
หากคุณต้องการติดตั้งแพ็คเกจด้วยชื่อที่ระบุในโปรเจ็กต์ คุณจะต้องรันคำสั่งต่อไปนี้:
npm install ชื่อเต็มของแพ็คเกจ
คำสั่ง packaging ข้างต้นสามารถ ให้ย่อเป็นรูปแบบต่อไปนี้:
npm i ชื่อที่สมบูรณ์ของแพ็คเกจ
2. ไฟล์เพิ่มเติมใดบ้างที่จะถูกเพิ่มหลังจากการติดตั้งแพ็คเกจเริ่มต้น?
หลังจากการติดตั้งแพ็คเกจเริ่มต้นเสร็จสิ้นแล้วจะมีโฟลเดอร์เพิ่มเติมที่เรียกว่า node_modules และแพ็คเกจไฟล์การกำหนดค่า lock.json ใต้โฟลเดอร์โปรเจ็กต์
ในหมู่พวกเขา: โฟลเดอร์ node_modules ใช้เพื่อจัดเก็บแพ็คเกจทั้งหมดที่ติดตั้งในโครงการ เมื่อ need() นำเข้าแพ็คเกจจากบริษัทอื่น ระบบจะค้นหาและโหลดแพ็คเกจจากไดเร็กทอรีนี้
ไฟล์การกำหนดค่า package-lock.json ใช้เพื่อบันทึกข้อมูลการดาวน์โหลดของแต่ละแพ็คเกจในไดเร็กทอรี node_modules เช่น ชื่อแพ็กเกจ หมายเลขเวอร์ชัน ที่อยู่การดาวน์โหลด ฯลฯ
หมายเหตุ: โปรแกรมเมอร์ไม่ควรแก้ไขโค้ดใดๆ ในไฟล์ node_modules หรือ package-lock.json ด้วยตนเอง เครื่องมือการจัดการแพ็กเกจ npm จะดูแลรักษาโค้ดเหล่านั้นโดยอัตโนมัติ
3. ติดตั้งแพ็คเกจเวอร์ชันที่ระบุ ตาม
ค่าเริ่มต้น เมื่อคุณใช้คำสั่งติดตั้ง npm เพื่อติดตั้งแพ็คเกจ แพ็คเกจเวอร์ชันล่าสุดจะถูกติดตั้งโดยอัตโนมัติ หากคุณต้องการติดตั้งแพ็คเกจเวอร์ชันที่ระบุ คุณสามารถระบุเวอร์ชันเฉพาะผ่านสัญลักษณ์ @ หลังชื่อแพ็คเกจ เช่น
npm i [email protected]
4. ข้อกำหนดเวอร์ชันความหมายของแพ็คเกจ
หมายเลขเวอร์ชันของ แพ็คเกจอยู่ในรูปแบบ "ทศนิยมประ" โดยกำหนดไว้เป็นตัวเลขทั้งหมด 3 หลัก เช่น 2.24.0
ความหมายของแต่ละหลักมีดังนี้
หลักที่ 1: เวอร์ชันหลัก
หลักที่ 2: เวอร์ชันการทำงาน
หลักที่ 3: แก้ไขข้อผิดพลาดเวอร์ชัน
หมายเลขเวอร์ชัน กฎสำหรับการส่งเสริมการขาย: ตราบใดที่หมายเลขเวอร์ชันก่อนหน้าเพิ่มขึ้น หมายเลขเวอร์ชันถัดไปจะกลับมาเป็นศูนย์
3.3 ไฟล์การกำหนดค่าการจัดการแพ็คเกจ
npm กำหนดว่าจะต้องระบุไฟล์การกำหนดค่าการจัดการแพ็คเกจชื่อ package.json ในไดเร็กทอรีรากของโปรเจ็กต์ ใช้เพื่อบันทึกข้อมูลการกำหนดค่าบางอย่างที่เกี่ยวข้องกับโครงการ ตัวอย่างเช่น
ชื่อโปรเจ็กต์ หมายเลขเวอร์ชัน คำอธิบาย ฯลฯ
แพ็คเกจใดที่ใช้ในโครงการ
แพ็คเกจใดที่ใช้ระหว่างการพัฒนาเท่านั้น
แพ็คเกจใดที่จำเป็นระหว่างการพัฒนาและการปรับใช้
ปัญหาที่พบ
ในการทำงานร่วมกันแบบหลายคน
: ขนาดของ แพ็คเกจของบุคคลที่สามมีขนาดใหญ่เกินไป ทำให้สมาชิกในทีมแชร์ซอร์สโค้ดของโปรเจ็กต์ไม่สะดวกวิธีแก้ไข: ลบ node_modules เมื่อแชร์
2. วิธีบันทึกแพ็คเกจที่ติดตั้งในโปรเจ็กต์
ในไดเร็กทอรีรากของโปรเจ็กต์ ให้สร้างไฟล์คอนฟิกูเรชันชื่อ package.json ซึ่งสามารถใช้เพื่อบันทึกแพ็คเกจที่ติดตั้งในโปรเจ็กต์ ทำให้ง่ายต่อการแชร์ซอร์สโค้ดของโปรเจ็กต์ระหว่างสมาชิกในทีมหลังจากลบไดเร็กทอรี node_modules
หมายเหตุ: ในการพัฒนาโปรเจ็กต์ในอนาคต อย่าลืมเพิ่มโฟลเดอร์ node_modules ลงในไฟล์ .gitignore ที่ละเว้น
3. สร้าง package.json อย่างรวดเร็ว
เครื่องมือการจัดการแพ็คเกจ npm จัดเตรียมคำสั่งทางลัดเพื่อสร้างไฟล์การกำหนดค่าการจัดการแพ็คเกจ package.json อย่างรวดเร็วในไดเร็กทอรีที่ดำเนินการคำสั่ง:
npm init -y
หมายเหตุ:
(1) คำสั่งข้างต้น สามารถรันได้สำเร็จในไดเร็กทอรีภาษาอังกฤษเท่านั้น! ดังนั้น ชื่อของโฟลเดอร์โครงการจะต้องตั้งชื่อเป็นภาษาอังกฤษ ไม่ใช่ภาษาจีน และจะต้องไม่มีการเว้นวรรค
(2) เมื่อรันคำสั่งการติดตั้ง npm เพื่อติดตั้งแพ็คเกจ เครื่องมือการจัดการแพ็คเกจ npm จะบันทึกชื่อและหมายเลขเวอร์ชันของแพ็คเกจลงใน package.json โดยอัตโนมัติ
4. โหนดการขึ้นต่อกัน
ในไฟล์ package.json มีโหนดการขึ้นต่อกัน ซึ่งใช้เป็นพิเศษเพื่อบันทึกแพ็คเกจที่คุณติดตั้งโดยใช้คำสั่ง npm install
5. ติดตั้งแพ็คเกจทั้งหมดพร้อมกัน
เมื่อเราได้รับโปรเจ็กต์ที่ลบ node_modules เราจำเป็นต้องดาวน์โหลดแพ็คเกจทั้งหมดลงในโปรเจ็กต์ก่อนจึงจะสามารถรันโปรเจ็กต์ได้ มิฉะนั้น ข้อผิดพลาดที่คล้ายกับข้อความต่อไปนี้จะถูกรายงาน:
คุณสามารถรันคำสั่งการติดตั้ง npm (หรือ npm i) เพื่อติดตั้งแพ็คเกจที่ต้องพึ่งพาทั้งหมดพร้อมกัน:
6. หากต้องการถอนการติดตั้งแพ็คเกจ
คุณสามารถรันคำสั่งถอนการติดตั้ง npm เพื่อถอนการติดตั้งแพ็คเกจที่ระบุ:
npm ถอนการติดตั้งชื่อแพ็คเกจเฉพาะ
หมายเหตุ: หลังจากดำเนินการคำสั่งถอนการติดตั้ง npm สำเร็จแล้ว แพ็คเกจที่ถอนการติดตั้งจะถูกลบออกจากการขึ้นต่อกันของ package.json โดยอัตโนมัติ . ไม่มีการจดชวเลขสำหรับการถอนการติดตั้ง
7. โหนด devDependencies
หากแพ็คเกจบางตัวจะถูกใช้เฉพาะในระหว่างขั้นตอนการพัฒนาโปรเจ็กต์และจะไม่ถูกใช้หลังจากโปรเจ็กต์ออนไลน์แล้ว ขอแนะนำให้บันทึกแพ็คเกจเหล่านี้ในโหนด devDependencies
ในทำนองเดียวกัน หากจำเป็นต้องใช้แพ็คเกจบางอย่างหลังจากการพัฒนาและการเปิดตัวโครงการ ขอแนะนำให้บันทึกแพ็คเกจเหล่านี้ในโหนดการขึ้นต่อกัน
คุณสามารถใช้คำสั่งต่อไปนี้เพื่อบันทึกแพ็คเกจลงในโหนด devDependencies:
3.4 แก้ไขปัญหาความเร็วในการดาวน์โหลดแพ็คเกจที่ช้า
1. เหตุใดความเร็วในการดาวน์โหลดแพ็คเกจจึงช้า
เมื่อใช้ npm ดาวน์โหลดแพ็คเกจ มันจะดาวน์โหลดจากเซิร์ฟเวอร์ต่างประเทศ register.npmjs.org/ ตามค่าเริ่มต้น ดังนั้นความเร็วในการดาวน์โหลดแพ็คเกจจึงช้ามาก .
2. เซิร์ฟเวอร์มิเรอร์ Taobao NPM
Taobao ได้สร้างเซิร์ฟเวอร์ในประเทศจีนเพื่อซิงโครไนซ์แพ็คเกจบนเซิร์ฟเวอร์ต่างประเทศอย่างเป็นทางการกับเซิร์ฟเวอร์ภายในประเทศ จากนั้นจึงให้บริการกระจายแพ็คเกจในประเทศจีน สิ่งนี้จะช่วยเพิ่มความเร็วในการดาวน์โหลดแพ็คเกจได้อย่างมาก
ส่วนขยาย: การมิเรอร์เป็นรูปแบบหนึ่งของการจัดเก็บไฟล์ ข้อมูลบนดิสก์หนึ่งมีสำเนาที่เหมือนกันบนดิสก์อื่นซึ่งก็คือมิเรอร์
3. สลับแหล่งมิเรอร์แพ็คเกจของ npm
แหล่งมิเรอร์ของแพ็คเกจอ้างอิงถึงที่อยู่เซิร์ฟเวอร์ของแพ็คเกจ
4. nrm
เพื่อให้สามารถสลับแหล่งรูปภาพของแพ็คเกจได้สะดวกยิ่งขึ้น เราสามารถติดตั้งเครื่องมือ nrm และใช้คำสั่งเทอร์มินัลที่ได้รับจาก nrm เพื่อดูและสลับแหล่งรูปภาพของแพ็คเกจอย่างรวดเร็ว
3.5 การจำแนกประเภทของแพ็คเกจ แพ็คเกจ
ที่ดาวน์โหลดโดยใช้เครื่องมือการจัดการแพ็คเกจ npm แบ่งออกเป็น 2 ประเภท ได้แก่
โครงการ
แพ็คเกจสากล
1. แพ็คเกจโครงการ
แพ็คเกจเหล่านั้นที่ติดตั้งในไดเร็กทอรี node_modules ของโครงการล้วนเป็นแพ็คเกจโครงการ
แพคเกจโครงการแบ่งออกเป็นสองประเภทคือ:
แพคเกจการพึ่งพาการพัฒนา (แพคเกจที่บันทึกไว้ในโหนด devDependencies ซึ่งจะใช้ในระหว่างการพัฒนาเท่านั้น)
แพคเกจการพึ่งพาหลัก (แพคเกจที่บันทึกไว้ในโหนดการพึ่งพาซึ่งใช้ระหว่างการพัฒนาและโครงการ มันจะเป็น ใช้หลังจากออนไลน์)
2. แพ็คเกจสากล เมื่อดำเนินการคำสั่งติดตั้ง npm หากมีพารามิเตอร์ -g ระบุไว้ แพ็คเกจจะถูกติดตั้งเป็นแพ็คเกจสากล
แพ็คเกจสากลจะถูกติดตั้งในไดเรกทอรี C:UsersuserAppDataRoamingnpmnode_modules
หมายเหตุ:
(1) จำเป็นต้องติดตั้งแพ็คเกจเครื่องมือทั่วโลกเท่านั้น เนื่องจากมีคำสั่งเทอร์มินัลที่เป็นประโยชน์
(2) เพื่อพิจารณาว่าจำเป็นต้องติดตั้งแพ็คเกจทั่วโลกก่อนจึงจะสามารถใช้งานได้หรือไม่ คุณสามารถดูคำแนะนำการใช้งานอย่างเป็นทางการได้
3. i5ting_toc
i5ting_toc เป็นเครื่องมือขนาดเล็กที่สามารถแปลงเอกสาร md ให้เป็นหน้า html ได้ ขั้นตอนการใช้งานมีดังนี้:
3.6 โครงสร้างแพ็คเกจที่ได้มาตรฐาน
หลังจากทำความเข้าใจแนวคิดของแพ็คเกจและวิธีการดาวน์โหลดและใช้แพ็คเกจแล้ว เรามาดูโครงสร้างภายในของแพ็คเกจให้ละเอียดยิ่งขึ้นกัน
แพ็คเกจมาตรฐานต้องเป็นไปตามข้อกำหนดสามประการต่อไปนี้:
(1) แพ็คเกจต้องมีอยู่ในไดเร็กทอรีแยกต่างหาก
(2) ไดเร็กทอรีระดับบนสุดของแพ็คเกจต้องมีไฟล์การกำหนดค่าการจัดการแพ็คเกจ package.json
(3) package.json ต้องมี คุณลักษณะสามประการ ได้แก่ ชื่อ เวอร์ชัน และหลัก ซึ่งแสดงถึงชื่อแพ็กเกจ หมายเลขเวอร์ชัน และรายการแพ็กเกจตามลำดับ
หมายเหตุ: ข้อกำหนดสามประการข้างต้นเป็นรูปแบบที่โครงสร้างแพ็กเกจมาตรฐานต้องปฏิบัติตาม สำหรับข้อจำกัดเพิ่มเติม โปรดดูที่ URL ต่อไปนี้: https://yarnpkg.com/zh-Hans/docs/package-json
3.7 พัฒนา แพ็คเกจของตัวเอง
1. เริ่มต้นโครงสร้างพื้นฐานของแพ็คเกจ
(1) สร้างโฟลเดอร์ itheima-tools ใหม่เป็นไดเร็กทอรีรากของแพ็คเกจ
(2) ในโฟลเดอร์ itheima-tools ให้สร้างไฟล์สามไฟล์ต่อไปนี้:
package.json (การจัดการแพ็คเกจ ไฟล์การกำหนดค่า)
index.js (ไฟล์รายการของแพ็คเกจ)
README.md (เอกสารคำอธิบายของแพ็คเกจ)
2. เตรียมใช้งาน package.json
หมายเหตุ: ชื่อ - ใช้เพื่อบอกชื่อของแอปพลิเคชันหรือแพ็คเกจซอฟต์แวร์ - ระบุเวอร์ชันปัจจุบัน - ตั้งค่าจุดเริ่มต้นของแอปพลิเคชัน คำอธิบายเป็นคำอธิบายสั้น ๆ ของคำหลักของแอปพลิเคชัน / แพ็คเกจซอฟต์แวร์ อาร์เรย์ของคำหลักที่เกี่ยวข้องกับฟังก์ชันแพ็คเกจซอฟต์แวร์ (ช่วยในการเรียกดูเว็บไซต์อย่างเป็นทางการของโหนดเพื่อค้นหาแพ็คเกจซอฟต์แวร์) ใบอนุญาต—ระบุใบอนุญาตของแพ็คเกจซอฟต์แวร์
3. เขียนเอกสารประกอบแพ็คเกจ
ไฟล์ README.md ในไดเร็กทอรีรากของแพ็คเกจคือเอกสารประกอบการใช้งานแพ็คเกจ โดยเราสามารถเขียนคำแนะนำการใช้งานแพ็คเกจในรูปแบบมาร์กดาวน์ไว้ล่วงหน้าเพื่อความสะดวกของผู้ใช้
ไม่มีข้อกำหนดบังคับสำหรับเนื้อหาที่ควรเขียนในไฟล์ README ตราบใดที่สามารถอธิบายฟังก์ชัน การใช้งาน ข้อควรระวัง ฯลฯ ของแพ็คเกจได้อย่างชัดเจน
3.8 แพ็คเกจการเปิดตัว
1. ลงทะเบียนบัญชี npm
(1) เยี่ยมชมเว็บไซต์ www.npmjs.com/ คลิกปุ่มลงทะเบียนเพื่อเข้าสู่อินเทอร์เฟซผู้ใช้การลงทะเบียน
(2) กรอกข้อมูลที่เกี่ยวข้องกับบัญชี: ชื่อเต็ม, อีเมลสาธารณะ, ชื่อผู้ใช้, รหัสผ่าน
(3) คลิกปุ่มสร้างบัญชีเพื่อลงทะเบียนบัญชี
(4) เข้าสู่ระบบอีเมลของคุณและคลิกที่ลิงค์ยืนยันเพื่อยืนยันบัญชี
2. เข้าสู่ระบบบัญชี npm
หลังจากการลงทะเบียนบัญชี npm เสร็จสิ้น คุณ สามารถรันคำสั่งล็อกอิน npm ใน Terminal แล้วกรอกชื่อผู้ใช้และรหัสผ่าน (รหัสผ่าน) ที่ถูกซ่อนไว้และไม่สามารถมองเห็นได้ เพียงกรอกรหัสที่ถูกต้อง (Enter) ที่อยู่อีเมล และรหัส OTP ที่ส่งไปยังที่อยู่อีเมล จากนั้น คุณสามารถเข้าสู่ระบบได้สำเร็จ
หมายเหตุ: ก่อนที่จะรันคำสั่งล็อกอิน npm คุณต้องเปลี่ยนที่อยู่เซิร์ฟเวอร์ของแพ็คเกจเป็นเซิร์ฟเวอร์อย่างเป็นทางการของ npm ก่อน (หากคุณเคยใช้เซิร์ฟเวอร์ taobao มาก่อน คุณต้องเปลี่ยนไปใช้เซิร์ฟเวอร์อย่างเป็นทางการของ npm) มิฉะนั้น การเผยแพร่แพ็คเกจจะล้มเหลว!
3. เผยแพร่แพ็คเกจเป็น
npm
หลังจากเปลี่ยนเทอร์มินัลเป็นไดเร็กทอรีรูทของแพ็คเกจแล้ว ให้รันคำสั่ง npm publish เพื่อเผยแพร่แพ็คเกจเป็น npm (หมายเหตุ: ชื่อแพ็คเกจต้องไม่เหมือนกัน คุณสามารถไปที่เว็บไซต์อย่างเป็นทางการเพื่อ ตรวจสอบว่ามีแพ็คเกจชื่อเดียวกันหรือไม่)
4. ลบแพ็คเกจที่เผยแพร่
เรียกใช้คำสั่ง npm unpublish package name --force เพื่อลบแพ็คเกจที่เผยแพร่ออกจาก npm
หมายเหตุ:
(1) คำสั่ง npm unpublish สามารถลบแพ็คเกจที่เผยแพร่ภายใน 72 ชั่วโมงเท่านั้น
(2) แพ็คเกจที่ถูกลบโดย npm unpublish จะไม่ได้รับอนุญาตให้เผยแพร่ซ้ำภายใน 24 ชั่วโมง
(3) โปรดใช้ความระมัดระวังเมื่อเผยแพร่แพ็คเกจและพยายามอย่าเผยแพร่ เมื่อเวลา 23.00 น. แพ็คเกจไร้ความหมาย!
4.1 จัดลำดับความสำคัญของการโหลดจากแคช
โมดูลจะถูกแคชหลังจากการโหลดครั้งแรก นอกจากนี้ยังหมายความว่าการเรียก need() หลายครั้งจะไม่ทำให้โค้ดของโมดูลถูกเรียกใช้งานหลายครั้ง
หมายเหตุ: ไม่ว่าจะเป็นโมดูลในตัว โมดูลที่ผู้ใช้กำหนด หรือโมดูลของบริษัทอื่น โมดูลเหล่านี้จะถูกโหลดจากแคชก่อน ซึ่งจะช่วยปรับปรุงประสิทธิภาพการโหลดโมดูล
4.2 กลไกการโหลดของโมดูลในตัว โมดูล
ในตัวเป็นโมดูลที่จัดทำอย่างเป็นทางการโดย Node.js โมดูลในตัวมีลำดับความสำคัญในการโหลดสูงสุด
ตัวอย่างเช่น: need('fs') ส่งคืนโมดูล fs ในตัวเสมอ แม้ว่าจะมีแพ็คเกจที่มีชื่อเดียวกันในไดเร็กทอรี node_modules ก็เรียกอีกอย่างว่า fs
4.3 กลไกการโหลดโมดูลแบบกำหนดเอง
เมื่อใช้ need() เพื่อโหลดโมดูลแบบกำหนดเอง คุณต้องระบุตัวระบุเส้นทางที่ขึ้นต้นด้วย ./ หรือ ../ เมื่อโหลดโมดูลแบบกำหนดเอง หากไม่มีการระบุตัวระบุเส้นทาง เช่น ./ หรือ ../ โหนดจะโหลดเป็นโมดูลในตัวหรือโมดูลของบริษัทอื่น
ในเวลาเดียวกัน เมื่อใช้ need() เพื่อนำเข้าโมดูลที่กำหนดเอง หากละเว้นนามสกุลไฟล์ Node.js จะพยายามโหลดไฟล์ต่อไปนี้ตามลำดับ:
(1) โหลดตามชื่อไฟล์ที่แน่นอน
(2) เสร็จสิ้น .js ส่วนขยายที่จะโหลด
(3) กรอกส่วนขยาย .json เพื่อโหลด
(4) กรอกส่วนขยาย .node ที่จะโหลด
(5) การโหลดล้มเหลว เทอร์มินัลจะรายงานข้อผิดพลาด
4.4 หากกลไกการโหลดของโมดูลบุคคลที่สาม
ถูกส่งผ่านเพื่อกำหนด () หากตัวระบุโมดูลไม่ใช่โมดูลในตัวและไม่ได้ขึ้นต้นด้วย './' หรือ '../' Node.js จะพยายามโหลดโมดูลบุคคลที่สามจากโฟลเดอร์ /node_modules โดยเริ่มจาก ไดเร็กทอรีหลักของโมดูลปัจจุบัน
หากไม่พบโมดูลของบริษัทอื่นที่เกี่ยวข้อง โมดูลนั้นจะถูกย้ายไปยังไดเร็กทอรีหลักที่สูงกว่าหนึ่งระดับและโหลดจนถึงไดเร็กทอรีรากของระบบไฟล์
ตัวอย่างเช่น สมมติว่า need('tools') ถูกเรียกในไฟล์ 'C:Usersitheimaprojectfoo.js' Node.js จะค้นหาตามลำดับต่อไปนี้:
(1) C:Usersitheima project node_modulestools
(2) C:Usersitheimanode_modulestools
(3) C:Usersnode_modulestools
(4) C:node_modulestools
4.5 Directory เป็นโมดูล
เมื่อส่งผ่าน directory เป็นโมดูล ตัวระบุ เมื่อโหลด need() มีวิธีการโหลดสามวิธี:
(1) ค้นหาไฟล์ชื่อ package.json ในไดเร็กทอรีที่กำลังโหลด และค้นหาแอตทริบิวต์หลัก ซึ่งทำหน้าที่เป็นจุดเริ่มต้นสำหรับ need() เพื่อโหลด
( 2) หากอยู่ในไดเร็กทอรี หากไม่มีไฟล์ package.json หรือรายการหลักไม่มีอยู่หรือไม่สามารถแยกวิเคราะห์ได้ Node.js จะพยายามโหลดไฟล์ index.js ในไดเร็กทอรี
(3) หากสองขั้นตอนข้างต้นล้มเหลว Node.js จะพิมพ์ข้อความแสดงข้อผิดพลาดในเทอร์มินัลโดยรายงานโมดูลที่หายไป: ข้อผิดพลาด: ไม่พบโมดูล 'xxx'
บทความนี้ทำซ้ำจาก: https://juejin.cn/post /7083445004240158757