JS: Export / Import
Glossary overview

JS: Export / Import

В JS по сути 2 мира экспорта/импорта:

  • ES Modules (современный стандарт)
  • CommonJS (старый нодовский).

И внутри каждого есть несколько форм.

Важный прикол: ESM и CommonJS можно смешивать, но там начинаются нюансы (default превращается в .default, зависит от Node/бандлера). Если ты в браузере/современном фронте, почти всегда речь про ESM.

ES Modules (import/export)

1 и 2 я как раз использую.

  1. Named export (именованный)
  • экспортируешь конкретные штуки по имени
export const a = 1;
export function sum(x, y) { return x + y; }

// Use
import { a, sum } from "./mod.js";
import { sum as add } from "./mod.js"; // алиас
  1. Default export (дефолтный)
  • у модуля как бы один главный экспорт
export default function hello() {}
// или
const x = 123;
export default x;

// Use
import hello from "./mod.js";

3. Namespace import (всё в объект)

import * as api from "./mod.js";
api.sum(1,2);

4. Side-effect import (просто выполнить файл)

Без импорта значений, тупо чтобы код отработал (полифиллы, регистрация, стили в бандлерах)

import "./setup.js";

CommonJS (require/module.exports)

  1. module.exports = …
module.exports = function () {};
// или
module.exports = { a: 1, sum() {} };

// Use
const mod = require("./mod");

    2. exports.xxx = …

    exports.a = 1;
    exports.sum = (x,y) => x+y;
    
    // Use
    const { a, sum } = require("./mod");