Модули в JS

Модуль

функции, классы, переменные и другие элементы, которые можно использовать в других частях приложения


import

import { add, subtract } from './math.js';
console.log(add(2, 3)); // 5
console.log(subtract(5, 3)); // 2
                                    

Система модулей CommonJS

система модулей, используемая в Node.js

Экспорт


module.exports = function add(a, b) {
  return a + b;
};
                                

Импорт


const add = require('./export');
console.log(add(2, 3));
                                

Синхронное выполнение - каждый модуль загружается и выполняется при его первом требовании

Система модулей ES модули

система модулей, введённая в спецификацию ES6

Экспорт


export function add(a, b) {
  return a + b;
}
                                

Импорт


import { add } from './export.js';
console.log(add(2, 3)); // 5
                                

Асинхронное выполнение - позволяет импортировать модуль вверху файла, а импорт происходит в момент когда собирается пакет приложения

export vs export default

Именованный экспорт export

Позволяет экспортировать несколько сущностей из одного модуля


export const PI = 3.14;
export function add(a, b) {
  return a + b;
}
                                

import { PI, add } from './math.js';
                            

Экспорт по умолчанию export default

Позволяет экспортировать только одну сущность по умолчанию


export default function log(msg) {
  console.log(msg);
}
                                

import log from './logger.js'; // имя может быть любым
log('Привет!');
                                

Пакетный менеджер

инструмент, который помогает разработчику устанавливать, обновлять и управлять внешними библиотеками

Node Package Manager (NPM)

пакетный менеджер для Node.js

Позволяет управлять не только серверными пакетами, но и фронтенд-зависимостями

npm в экосистеме JavaScript

  • Устанавливает пакеты (библиотеки) и их зависимости.
  • Обновляет пакеты до новых версий.
  • Следит за связями между библиотеками.
  • Создаёт и обновляет файл package.json

package.json