В JS по сути 2 мира экспорта/импорта:
- ES Modules (современный стандарт)
- CommonJS (старый нодовский).
И внутри каждого есть несколько форм.
Важный прикол: ESM и CommonJS можно смешивать, но там начинаются нюансы (default превращается в .default, зависит от Node/бандлера). Если ты в браузере/современном фронте, почти всегда речь про ESM.
ES Modules (import/export)
1 и 2 я как раз использую.
- 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"; // алиас
- 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)
- 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");