โมดูล & npm
ระบบโมดูลสองแบบ หนึ่งระบบนิเวศ
หัวข้อที่มีชื่อว่า “ระบบโมดูลสองแบบ หนึ่งระบบนิเวศ”Node.js มาพร้อมกับระบบโมดูลสองแบบ CommonJS (CJS) คือระบบดั้งเดิมที่ใช้ require() สำหรับโหลดโมดูลแบบ synchronous ECMAScript Modules (ESM) คือมาตรฐานสมัยใหม่ที่ใช้ร่วมกับ browser และใช้คำสั่ง import / export
ทั้งสองระบบได้รับการรองรับอย่างสมบูรณ์ใน Node.js เวอร์ชันปัจจุบัน ไฟล์จะใช้ระบบใดขึ้นอยู่กับนามสกุลไฟล์และฟิลด์ "type" ใน package.json ที่ใกล้ที่สุด
CJS เทียบกับ ESM โดยสรุป
หัวข้อที่มีชื่อว่า “CJS เทียบกับ ESM โดยสรุป”| CommonJS | ESM | |
|---|---|---|
| ไวยากรณ์ | require() / module.exports | import / export |
| นามสกุลไฟล์ | .js (ค่าเริ่มต้น) หรือ .cjs | .mjs หรือ .js เมื่อ "type": "module" |
"type" ใน package.json | "commonjs" (หรือไม่มี) | "module" |
| การโหลด | Synchronous | Asynchronous (static analysis) |
Top-level await | ไม่รองรับ | รองรับ |
สิ่งที่โมดูลนี้ครอบคลุม
หัวข้อที่มีชื่อว่า “สิ่งที่โมดูลนี้ครอบคลุม”| บทเรียน | หัวข้อ |
|---|---|
| ภาพรวม (หน้านี้) | การเปรียบเทียบ CJS กับ ESM และพื้นฐานระบบโมดูล |
| เจาะลึก package.json | ฟิลด์สำคัญ, semver ranges, และ npm init |
| การค้นหาโมดูล | วิธีที่ Node ค้นหาไฟล์, exports map, และ bare specifiers |
| การจัดการ Dependencies | การติดตั้ง, อัปเดต, และตรวจสอบแพ็คเกจด้วย npm |
| การเผยแพร่แพ็คเกจ | การเตรียมและเผยแพร่แพ็คเกจไปยัง npm registry |
ESM ในการทำงานจริง
หัวข้อที่มีชื่อว่า “ESM ในการทำงานจริง”โค้ดด้านล่างใช้ ESM import เพื่อโหลดโมดูลในตัวอย่าง path และแสดงตัวคั่นเส้นทางของแพลตฟอร์ม — ตัวอักษรที่ Node ใช้ระหว่างส่วนประกอบไดเรกทอรี (/ บน Unix, \ บน Windows):
Needs the Node.js runtime — open in StackBlitz to run.