ES2015 (ES6) является современным стандартом для модулей node.
Использование диррективы import
Возьмём модуль lib.js
// lib.js const PI = 3.1415926;// add values function sum(...args) { log('sum', args); return args.reduce((num, tot) => tot + num); } // multiply values function mult(...args) { log('mult', args); return args.reduce((num, tot) => tot * num); } // private logging function function log(...msg) { console.log(...msg); } export { PI, sum, mult };
И рассмотрим пример подключения такого файла:
import { sum, mult } from './lib.js';
Возможно, в будущем у node будет возможность импортировать модули по внешней ссылке. Но на текущий момент такой импорт возможен только с помощью модуля HTTPS loader (https://nodejs.org/dist/latest/docs/api/esm.html#https-loader):
import { someFunction } from 'https://example.com/lib.js';
При импорте каждому методу или свойству можем задать псевдоним:
import { sum as addAll, mult as multiplyAll } from './lib.js'; console.log( addAll(1,2,3,4) ); // 10 console.log( multiplyAll(1,2,3,4) ); // 24
Можем импортировать сразу всё содержимое файла:
import * as lib from './lib.js'; console.log( lib.PI ); // 3.1415926 console.log( lib.add(1,2,3,4) ); // 10 console.log( lib.mult(1,2,3,4) ); // 24
Модуль с единичной функцией может быть экспортирован с помощью ключевого слова default. Пример:
// moduleWithDefault.js export default function() { ... }; //or moduleWithDefault.js function x() { ... }; export default x;При импортировании такого модуля, мы можем задать любое имя:
import myDefault from './moduleWithDefault.js';
Это равносильно:
import { default as myDefault } from './moduleWithDefault.js';
Node.js начиная с версии 17 позволяет загружат JSON используя тот же import():
import data from './data.json' assert { type: 'json' };