0Pricing
JavaScript Academy · Урок

Разрешение модулей в Node и браузерных сборщиках

Узнайте, как разрешаются импорты: относительные и краткие спецификаторы, расширения файлов (.js/.mjs/.cjs), индексные файлы и простые точки входа пакетов

«Разрешение модулей в Node и браузерных сборщиках» — бесплатный урок JavaScript Academy на CoddyKit. Это урок 3 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения JavaScript Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс JavaScript Academy содержит 3 уроков всего.

Общая картина

Цель: понимать, как разрешаются пути импорта.

  • Относительные и непосредственные спецификаторы
  • Использовать явное расширение .js (безопасный вариант по умолчанию)
  • index.js в папках
  • Точки входа пакета (main/exports, вкратце)
Разрешение модулей в Node и браузерных сборщиках — иллюстрация 1

Относительные и непосредственные импорты

Относительные импорты начинаются с ./ или ../. Непосредственные импорты указывают на установленные пакеты.

// Relative path imports start with ./ or ../
// Bare specifiers refer to packages installed (e.g., "lodash")
const examples = [
  "import { sum } from \\"./math.js\\";   // relative, file nearby",
  "import leftPad from \\"left-pad\\";   // bare, from node_modules",
  "import thing from \\"../lib/thing.js\\"; // parent folder"
];

console.log("specifiers:");
for (const line of examples) console.log(line);
Разрешение модулей в Node и браузерных сборщиках — иллюстрация 2

Расширения имеют значение

Добавляйте расширение .js в ESM, чтобы избежать ошибок разрешения путей. Также могут встречаться .mjs или .cjs.

// Include file extensions for ESM (safe beginner habit)
const extTips = [
  "Good (ESM): import util from \\"./util.js\\"",
  "Also seen: .mjs for ESM files, .cjs for CJS files",
  "Avoid: import \\"./util\\" (may fail in Node/browsers)"
];

console.log("extensions:");
for (const t of extTips) console.log(t);
Разрешение модулей в Node и браузерных сборщиках — иллюстрация 3

Папки и index.js

Папки часто предоставляют index.js. Явная запись (.../index.js) понятнее для начинающих.

// If you import a folder, many setups look for index.js inside it
const folderExample = [
  "my-lib/",
  "  index.js",
  "  helpers/",
  "    index.js"
];

for (const l of folderExample) console.log(l);

// Typical imports
const dirImports = [
  "import main from \\"./my-lib/index.js\\";",
  "import alsoMain from \\"./my-lib/\\";        // some setups resolve to index.js",
  "import helper from \\"./my-lib/helpers/index.js\\";"
];

console.log("imports:");
for (const l of dirImports) console.log(l);
Разрешение модулей в Node и браузерных сборщиках — иллюстрация 4

Точки входа пакета

Пакеты объявляют точки входа через main/exports. Непосредственные импорты выбирают нужный файл для ESM или CJS.

// Installed packages declare entry points in package.json
const pkgJson = [
  "{",
  "  \\"name\\": \\"tiny-lib\\",",
  "  \\"main\\": \\"dist/cjs/index.cjs\\",",
  "  \\"exports\\": {",
  "    \\".\\": { \\"import\\": \\"./dist/esm/index.js\\", \\"require\\": \\"./dist/cjs/index.cjs\\" }",
  "  }",
  "}"
];

console.log("package.json entry (example):");
for (const l of pkgJson) console.log(l);

// Importing a bare specifier will use these fields
console.log("import tiny-lib     -> resolves to ESM or CJS entry depending on environment");
Разрешение модулей в Node и браузерных сборщиках — иллюстрация 5

Советы и подводные камни

Советы:

  • Для локальных файлов отдавайте предпочтение относительным путям с .js.
  • Используйте непосредственные импорты только для установленных пакетов.
  • Явно указывайте index.js, чтобы избежать неоднозначности.
  • В браузере импорты должны быть допустимыми URL (часто с расширениями).
Разрешение модулей в Node и браузерных сборщиках — иллюстрация 6

Тест по основам разрешения путей

Быстрая проверка: безопасный путь локального импорта.

Разрешение модулей в Node и браузерных сборщиках — иллюстрация 7

Повторение

Повторение: локальные файлы → ./file.js. Пакеты → непосредственные имена. Папки часто разрешаются в index.js. Знание этих правил делает импорты простыми и предсказуемыми.

Разрешение модулей в Node и браузерных сборщиках — иллюстрация 8

Часто задаваемые вопросы

Урок «Разрешение модулей в Node и браузерных сборщиках» бесплатный?

Да — полный текст урока «Разрешение модулей в Node и браузерных сборщиках» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс JavaScript Academy, подпишись на CoddyKit PRO. Курс JavaScript Academy содержит 3 уроков всего.

Чему я научусь в уроке «Разрешение модулей в Node и браузерных сборщиках»?

Узнайте, как разрешаются импорты: относительные и краткие спецификаторы, расширения файлов (.js/.mjs/.cjs), индексные файлы и простые точки входа пакетов Ты практикуешь JavaScript Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать JavaScript Academy?

Предыдущий опыт не требуется. JavaScript Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 3.

Сколько времени занимает урок «Разрешение модулей в Node и браузерных сборщиках»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке JavaScript Academy?

Да. Каждый урок JavaScript Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Основы ESM — import/export, экспорт по умолчанию и именованный
  2. Основы CommonJS — require/module.exports и exports
  3. Разрешение модулей в Node и браузерных сборщиках
← Назад к JavaScript Academy