ESM 加载器细节、路径与 URL 的差异
安全解析 URL,理解相对说明符与裸说明符,并了解文件 URL 与网页 URL 的区别。配合小型可运行演示
ESM 加载器细节、路径与 URL 的差异 是 CoddyKit 上的免费 JavaScript Academy 课时。 这是第 2 节课,共 3 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 JavaScript Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 JavaScript Academy 课程共包含 3 节课。
全局概览
目标:跨环境安全地解析路径。
- 使用URL构造函数解析相对路径
- 了解相对说明符和裸说明符的区别
- 了解file:与https:的差异
- 避免使用脆弱的字符串拼接来处理路径

相对于 base 解析
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);
file: URL 示例
file:URL 在类似 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构造函数解析相对路径(./、../),识别裸说明符与相对说明符的区别,并记住file:URL 不同于网页 URL。

常见问题解答
「ESM 加载器细节、路径与 URL 的差异」课时是免费的吗?
是的 — 「ESM 加载器细节、路径与 URL 的差异」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 JavaScript Academy 课程的其余内容,请升级到 CoddyKit PRO。 JavaScript Academy 课程共包含 3 节课。
「ESM 加载器细节、路径与 URL 的差异」这节课中我会学到什么?
安全解析 URL,理解相对说明符与裸说明符,并了解文件 URL 与网页 URL 的区别。配合小型可运行演示 你通过在浏览器中直接运行的动手代码来练习 JavaScript Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 JavaScript Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 JavaScript Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 3 节。
「ESM 加载器细节、路径与 URL 的差异」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 JavaScript Academy 课中编写并运行代码吗?
能。每节 JavaScript Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 全局对象、fetch 可用性与文件/网络接口
- ESM 加载器细节、路径与 URL 的差异
- 环境变量与配置模式