👾
Node.js
  • 🧑‍💻Full-Stack Web Developer
  • 📚Теорія
    • 1️⃣Основи Node.js
      • Вступ
      • Модулі Node.js
      • Запуск скриптів модулів в Node.js
      • Структура проєкту, експорт-імпорт, index.js як хаб
      • Модулі CommonJS
      • Модулі MJS
      • Модулі ECMAScript
      • Модулі NPM + базові модулі
      • Глобальні змінні
      • Робота з файлами
    • 2️⃣Консольні додатки
      • Створення консольних додатків
    • 3️⃣Фреймворк Express
      • Про Express
      • Nodemon і запуски скриптів
      • Postman
      • Проміжне ПЗ middleware
      • Передача даних на сервер
      • Роутінг
      • CRUD
      • Налаштування лінтера
    • 4️⃣REST API
      • Змінні оточення
      • Логування
      • REST
      • Методи HTTP
      • CORS
      • Формування URL для REST API
      • Контроллери відсутнього роуту і непередбачуваної помилки
      • Валідація даних Joi
      • Рефакторинг додатку за MVC архітектурою
      • Express автогенератор додатку
    • 5️⃣База даних Mongo.DB
      • Основи MongoDB
      • Налаштування Mongo Atlas
      • Встановлення локальної MongoDB і основні команди
    • 6️⃣ODM Mongoose
      • Mongoose
      • Порядок планування бекенд додатку
      • чорнетка
    • 7️⃣Автентифякація WJT
      • чорнетка
      • чорнетка 2
    • 8️⃣Файли
      • чернетка
    • 9️⃣тестування
      • чернетка
    • 🔟Page 14
      • імейли
    • чорнетка докер
    • чорнетка сокети
    • додаткові матеріали
    • 👷Практика
      • 1️⃣Page 4
      • 2️⃣Page 5
      • 3️⃣Page 6
      • 4️⃣Page 7
      • 5️⃣Page 8
      • 6️⃣Page 9
  • Про мене
    • Про мене
Powered by GitBook
On this page
  • Експорт-імпорт модулів
  • Дефолтний експорт
  • Експорт v2 (іменний експорт-імпорт)
  • index.js як хаб для експорту модулів
  1. Теорія
  2. Основи Node.js

Структура проєкту, експорт-імпорт, index.js як хаб

Створимо проєкт modules з такою структурою

modules
      ├── index.js
      └── greetings
                  ├── english.js
                  ├── japanese.js
                  ├── multilang.js
                  └── index.js

Cинтаксис написання функцій в Node.js такий само як і в JS.

function funcName() { };
const funcName = function () { };
const funcName = () => { };
const funcName = () => console.log("Hello world!");

Експорт-імпорт модулів

Дефолтний експорт

Створений модуль можемо експортувати за дефолтом використовуючи конструкцію module.exports.

modules/greetings/english.js
const eng = () => console.log("Hi, there!");
module.exports = eng;

Після цього можемо заімпортувати наш модуль в головному файлі index.js. При імпорті можна змінити назву модуля і дати нову. використовуємо функцію require.

modules/index.js
const english = require("./greetings/english");
english();

При цьому при імпорті розширення js вказувати не обов'язково. Після цього можна і викликати до виконання наш заімпортований модуль english().

Трохи більше про запуск модуля. А щоб виконати код в терміналі (якщо перебуваємо в кореневому каталозі проєкту modules) запускаємо його.

terminal
node index.js

Відповідно, якщо вкладеність скрипта більша, наприклад ми перебуваємо у дереві файлів на порядок вище, то звертаємось до файлу через слеш.

terminal
node modules/index.js

У цьому випадку файл index.js сприймається, як такий що має виконатися першим за замовчанням, якщо ми не вкажемо конкретне імʼя скрипта. Тобто достатньо вказати шлях до папки, а Node.js, якщо знайде в папці файл index.js, то виконає саме його.

terminal
node modules

Якщо Node.js не знайде файл index.js, то повернеться помилка.

Дефолтний експорт у програмуванні на Node.js ймовірніше виняток, ніж правило, тому розглянемо стандартний іменний експорт далі.

Експорт v2 (іменний експорт-імпорт)

Плюс такого підходу, що з одного файлу ми можемо експортувати одразу кілька функцій. Використовуємо синтаксис exports.НАЗВА_ФУНКЦІЇ

modules/greetings/multilang.js
exports.french = () => console.log("Bonjour");
exports.spanish = () => console.log("Buenos Días");

І одним рядком можемо заімпортувати наші функції в файл скрипта. Присвоївши їм якусь назву.

modules/index.js
const multi = require("./languages/multilang");
multi.french();
multi.spanish();

Можна при імпорті одразу провести деструктуризацію.

modules/index.js
const { french, spanish } = require("./languages/multilang");
french();
spanish();

Можна під час імпорту і деструктуризації навіть присвоїти нові імена функціям.

modules/index.js
const { french: fr, spanish: sp } = require("./languages/multilang");
fr();
sp();

index.js як хаб для експорту модулів

Щоб трохи більше прикладів було так само створимо й експортуємо ще оду функцію (модуль).

modules/greetings/japanese.js
exports.japanese = () => console.log("Kon'nichiwa");

А тепер у каталозі modules/greetings створимо свій внутрішній index.js. Його і будемо використовувати як своєрідний хаб для експорту.

Логіка така: Оскільки за замовчанням, якщо не вказувати імʼя файла, то Node.js обирає index.js. Тому логічно у ньому зібрати всі експортовані функції і експортувати як обʼєкт. А при імпорті в проєкті просто вказувати назву папки, і при цьому не вказуючи кожен файл окремо. Таким чином ми оптимізуємо основний код програми. Використаємо для цього module.exports.

modules/greetings/index.js
const english = require("./english");
const { french, spanish } = require("./multilang");
const { japanese } = require("./japanese");

module.exports = {
  english,
  french,
  spanish,
  japanese,
};

Тоді імпорт в головному index.js буде виглядати так:

modules/index.js
const { english, french, spanish, japanese } = require("./greetings");

english();
french();
spanish();
japanese();

У цьому прикладі ми одразу деструктуризуємо наші функції, хоча інколи зручно не робити цього. Принцип коду обираєте ви.

modules/index.js
const greetings = require("./greetings");

greetings.english();
greetings.french();
greetings.spanish();
greetings.japanese();

PreviousЗапуск скриптів модулів в Node.jsNextМодулі CommonJS

Last updated 1 year ago

📚
1️⃣