ข้อแปลกของตัวโหลด ESM และความแตกต่างของ path/URL
แก้ไข URL อย่างปลอดภัย ทำความเข้าใจตัวระบุแบบสัมพัทธ์เทียบกับแบบเปล่า และดูว่า URL ของไฟล์ต่างจาก URL เว็บอย่างไร พร้อมตัวอย่างสาธิตที่รันได้
ข้อแปลกของตัวโหลด ESM และความแตกต่างของ path/URL เป็นบทเรียน JavaScript Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 3 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน JavaScript Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส JavaScript Academy มีบทเรียนทั้งหมด 3 บทเรียน
ภาพรวม
เป้าหมาย: แก้ไขเส้นทางอย่างปลอดภัยในทุกสภาพแวดล้อม
- ใช้ตัวสร้าง URL เพื่อแก้ไขเส้นทางสัมพัทธ์
- แยกแยะตัวระบุแบบไม่ระบุเส้นทางกับตัวระบุแบบสัมพัทธ์
- เข้าใจความแตกต่างระหว่าง file: และ https:
- หลีกเลี่ยงการต่อสตริงเพื่อสร้างเส้นทางแบบเปราะบาง

เส้นทางสัมพัทธ์เทียบกับฐาน
new URL(relative, base) จัดการส่วนประกอบของเส้นทางและเครื่องหมายทับได้อย่างถูกต้อง
// Use URL to resolve "./" against a base
const base = "https://site.com/app/screens/";
const img = new URL("./images/icon.png", base);
console.log("resolved:", img.href);
ปรับรูปแบบด้วย ..
ตัวสร้างจะลบ ../ ได้อย่างถูกต้อง คุณจึงไม่ต้องใช้วิธีดัดแปลงสตริงเอง
// URL resolves "../" segments
const u = new URL("../assets/a.txt", "https://x.com/app/views/page/");
console.log("normalized:", u.href);
ทำความรู้จัก URL แบบ file:
URL แบบ file: ชี้ไปยังไฟล์ภายในเครื่องในสภาพแวดล้อมลักษณะเดียวกับ Node ส่วนเบราว์เซอร์ไม่สามารถอ่านได้โดยตรงหากผู้ใช้ไม่ดำเนินการอนุญาต
// You can also work with file: URLs (no actual file I/O here)
const baseFile = "file:///home/user/project/src/";
const file = new URL("./data/sample.txt", baseFile);
console.log("file url:", file.href);
ชนิดของตัวระบุ
ตัวโหลด ESM จัดการตัวระบุแบบไม่ระบุเส้นทางแตกต่างจากตัวระบุแบบสัมพัทธ์หรือ URL แบบสัมบูรณ์ การรู้จักชนิดของตัวระบุจึงช่วยได้
// Tiny helper: categorize a module specifier
function specKind(s) {
if (typeof s !== "string") return "unknown";
if (s.startsWith("./") || s.startsWith("../") || s.startsWith("/")) return "relative-or-absolute";
if (s.startsWith("http://") || s.startsWith("https://") || s.startsWith("file://")) return "url";
return "bare"; // like "lodash" or "fs"
}
console.log("kind ./util.js:", specKind("./util.js"));
console.log("kind lodash :", specKind("lodash"));
console.log("kind https:// :", specKind("https://cdn.site/x.js"));
แนวปฏิบัติที่เหมาะกับผู้เริ่มต้น
เคล็ดลับ:
- ควรใช้ URL(relative, base) แทนการต่อสตริง
- ทำความเข้าใจตัวระบุแบบไม่ระบุเส้นทางกับตัวระบุแบบสัมพัทธ์
- อย่าคิดว่าไฟล์มีอยู่ในเบราว์เซอร์เสมอ
- ทำให้เส้นทางสั้นและอ่านง่ายสำหรับผู้เริ่มต้น

แบบทดสอบพื้นฐานการแก้ไข URL
ตรวจสอบอย่างรวดเร็ว: สร้าง URL อย่างปลอดภัย

ทบทวน
ทบทวน: ใช้ตัวสร้าง URL เพื่อแก้ไขเส้นทางสัมพัทธ์ (./, ../) แยกแยะตัวระบุแบบไม่ระบุเส้นทางกับตัวระบุแบบสัมพัทธ์ และจำไว้ว่า URL แบบ file: แตกต่างจาก URL บนเว็บ

คำถามที่พบบ่อย
บทเรียน “ข้อแปลกของตัวโหลด ESM และความแตกต่างของ path/URL” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ข้อแปลกของตัวโหลด ESM และความแตกต่างของ path/URL” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส JavaScript Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส JavaScript Academy มีบทเรียนทั้งหมด 3 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ข้อแปลกของตัวโหลด ESM และความแตกต่างของ path/URL”
แก้ไข URL อย่างปลอดภัย ทำความเข้าใจตัวระบุแบบสัมพัทธ์เทียบกับแบบเปล่า และดูว่า URL ของไฟล์ต่างจาก URL เว็บอย่างไร พร้อมตัวอย่างสาธิตที่รันได้ คุณปฏิบัติ JavaScript Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน JavaScript Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน JavaScript Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 3 บทเรียน
บทเรียน “ข้อแปลกของตัวโหลด ESM และความแตกต่างของ path/URL” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน JavaScript Academy นี้ได้ไหม
ได้ บทเรียน JavaScript Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- โกลบอล ความพร้อมใช้งานของ fetch และ API ไฟล์หรือเครือข่าย
- ข้อแปลกของตัวโหลด ESM และความแตกต่างของ path/URL
- ตัวแปรสภาพแวดล้อมและรูปแบบการตั้งค่า