Структура проєкту, експорт-імпорт, index.js як хаб
Створимо проєкт modules з такою структурою
Cинтаксис написання функцій в Node.js такий само як і в JS.
Експорт-імпорт модулів
Дефолтний експорт
Створений модуль можемо експортувати за дефолтом використовуючи конструкцію module.exports.
Після цього можемо заімпортувати наш модуль в головному файлі index.js. При імпорті можна змінити назву модуля і дати нову. використовуємо функцію require.
При цьому при імпорті розширення js вказувати не обов'язково. Після цього можна і викликати до виконання наш заімпортований модуль english().
Трохи більше про запуск модуля. А щоб виконати код в терміналі (якщо перебуваємо в кореневому каталозі проєкту modules) запускаємо його.
Відповідно, якщо вкладеність скрипта більша, наприклад ми перебуваємо у дереві файлів на порядок вище, то звертаємось до файлу через слеш.
У цьому випадку файл index.js сприймається, як такий що має виконатися першим за замовчанням, якщо ми не вкажемо конкретне імʼя скрипта. Тобто достатньо вказати шлях до папки, а Node.js, якщо знайде в папці файл index.js, то виконає саме його.
Якщо Node.js не знайде файл index.js, то повернеться помилка.
Дефолтний експорт у програмуванні на Node.js ймовірніше виняток, ніж правило, тому розглянемо стандартний іменний експорт далі.
Експорт v2 (іменний експорт-імпорт)
Плюс такого підходу, що з одного файлу ми можемо експортувати одразу кілька функцій. Використовуємо синтаксис exports.НАЗВА_ФУНКЦІЇ
І одним рядком можемо заімпортувати наші функції в файл скрипта. Присвоївши їм якусь назву.
Можна при імпорті одразу провести деструктуризацію.
Можна під час імпорту і деструктуризації навіть присвоїти нові імена функціям.
index.js як хаб для експорту модулів
Щоб трохи більше прикладів було так само створимо й експортуємо ще оду функцію (модуль).
А тепер у каталозі modules/greetings створимо свій внутрішній index.js. Його і будемо використовувати як своєрідний хаб для експорту.
Логіка така: Оскільки за замовчанням, якщо не вказувати імʼя файла, то Node.js обирає index.js. Тому логічно у ньому зібрати всі експортовані функції і експортувати як обʼєкт. А при імпорті в проєкті просто вказувати назву папки, і при цьому не вказуючи кожен файл окремо. Таким чином ми оптимізуємо основний код програми. Використаємо для цього module.exports.
Тоді імпорт в головному index.js буде виглядати так:
У цьому прикладі ми одразу деструктуризуємо наші функції, хоча інколи зручно не робити цього. Принцип коду обираєте ви.
Last updated