Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Поєднання CommonJS та ES-Модулів | Секція
Основи Node.js

bookПоєднання CommonJS та ES-Модулів

Свайпніть щоб показати меню

Під час роботи над проєктами Node.js ви можете зустріти як CommonJS, так і ES Modules в одному кодовому просторі. Node.js спочатку використовував CommonJS (require/module.exports), але тепер також підтримує ES Modules (import/export). Поєднання цих двох систем може бути складним через відмінності у синтаксисі, розширеннях файлів і поведінці завантаження. Виникають проблеми сумісності, оскільки не всі можливості доступні при імпорті одного типу модуля в інший. Важливо розуміти стратегії використання обох систем разом, а також обмеження, з якими ви можете зіткнутися.

Поширена стратегія — обрати основну модульну систему для проєкту та використовувати можливості сумісності лише за потреби. Наприклад, більшість коду можна залишити на CommonJS для сумісності зі старішими інструментами, а ES Modules використовувати для нового коду або коли потрібні такі можливості, як import.meta.url. Node.js дозволяє вказати тип модуля у файлі package.json через поле "type": "commonjs" або "module". Файли з розширенням .cjs завжди розглядаються як CommonJS, а .mjs — як ES Modules, незалежно від значення поля "type". Це дає гнучкість у поєднанні типів модулів у межах одного проєкту, але варто враховувати обмеження та відмінності у завантаженні й виконанні модулів.

math.cjs

math.cjs

app.mjs

app.mjs

copy

У цьому прикладі коду показано, як можна використовувати CommonJS-модуль всередині ES Module у Node.js. Файл math.cjs використовує синтаксис CommonJS, експортує функцію add за допомогою module.exports.add = (a, b) => a + b;. Ця функція додає два числа та повертає результат.

Файл app.mjs є ES Module. ES Modules не можуть напряму використовувати require, тому ви імпортуєте функцію createRequire з вбудованого пакета module. Викликавши createRequire(import.meta.url), ви створюєте функцію require, яка працює у контексті поточного файлу ES Module. Далі цю require використовують для імпорту CommonJS-модуля (math.cjs).

Після виклику math.add(2, 3) код виведе у консоль 5. Такий підхід дозволяє поєднувати CommonJS та ES Modules в одному проєкті, використовуючи переваги кожної системи за потреби.

question mark

Коли слід обирати CommonJS замість ES Modules у проєкті Node.js?

Виберіть правильну відповідь

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 17

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Секція 1. Розділ 17
some-alt