імпорт \ єкспорт функцій

Створюємо папку

Створюємо в ній файли modulesOne.mjs і modulesTwo.mjs

Єкспорт по дефаулту

modulesOne.mjs єкпортируется одна функция

const sum = (a,b) => a+b
export default sum

modulesTwo.mjs - імпортируєма фунція може мати любе імя

import sum from "./modulesOne.mjs";
let res1 = sum (10,2)
console.log(res1)

Запуск з термінала через node.js

node .\modulesTwo.mjs

Єкспорт декілька функцій

modulesOne.mjs єкпортируется декілька змінних

const one = 1
const two = 'two'
export {
one,
two
}

modulesTwo.mjs імена змінних поинні спіпадати але можно додатково перреіменовуввати

import {
one as oneRename,
two
} from './modulesOne.mjs'
console.log(oneRename)
console.log(two)

Запуск з термінала через node.js

node .\modulesTwo.mjs

Рекомендации імпорта \ єкспорта

Импортировать желательно располагать вверху файла

Сначала іморт с внешних модулей а потом с своих

Єкспортировать желательно располагать внизу файла

Перейменування

Rename export — це техніка, яка дозволяє імпортувати іменовані експортовані змінні, функції тощо з одного модуля до іншого, змінюючи їм ім’я під час імпорту. Щоб задати нове ім'я під час імпорту з іншого модуля, використовується ключове слово as.

import { name as newName } from '...'

// Module myModule.js
export const original = "Hello, World!";
// Your current module, for example app.js
import { original as renamed } from './myModule.js';
console.log(renamed); // "Hello, World!"

Імпорт простору імен

Імпорт простору імен (namespace import) — це техніка імпортування всього вмісту модуля як об'єкта з іменем, що представляє простір імен цього модуля. Це означає, що всі іменовані експорти з модуля стають властивостями цього об'єкта. Це зручно, коли потрібно імпортувати багато різних функцій, змінних або класів з модуля, не обираючи їх по одному.

// Module user.js
export const name = "Mango";
export const age = 26;
export const email = "mango@mail.com";
// Your current module
import * as user from './myModule.js';
console.log(user.name); // "Mango"
console.log(user.age); // 26
console.log(user.email ); // "mango@mail.com"