ESM 로더의 특이점과 경로·URL 차이
URL을 안전하게 해석하고 상대 지정자와 단순 지정자를 이해하며, 파일 URL과 웹 URL의 차이를 살펴봅니다. 바로 실행할 수 있는 작은 예제를 제공합니다.
ESM 로더의 특이점과 경로·URL 차이은(는) CoddyKit의 무료 JavaScript Academy 강의입니다. 이것은 3개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 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);
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 차이” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 JavaScript Academy 강의 전체를 잠금 해제할 수 있습니다. JavaScript Academy 강의에는 총 3개의 강의가 포함되어 있습니다.
“ESM 로더의 특이점과 경로·URL 차이”에서 뭘 배우나요?
URL을 안전하게 해석하고 상대 지정자와 단순 지정자를 이해하며, 파일 URL과 웹 URL의 차이를 살펴봅니다. 바로 실행할 수 있는 작은 예제를 제공합니다. 브라우저에서 직접 실행하는 실습 코드로 JavaScript Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
JavaScript Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 JavaScript Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 3개 중 2번째 강의입니다.
“ESM 로더의 특이점과 경로·URL 차이” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 JavaScript Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 JavaScript Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 전역 객체, fetch 사용 가능 여부와 파일·네트워크 API
- ESM 로더의 특이점과 경로·URL 차이
- 환경 변수와 구성 패턴