Для импорта одного модуля в другом модуле достаточно прописать оператор import и передать ему путь к импортируемому модулю:
import "путь_к_модулю";
Например, пусть у нас будет следующий модуль message.js
const messageText = "Hello METANIT.COM"; console.log(messageText);
Фактически этот модуль выглядит как обычный скрипт, который определяет переменную и выводит ее значение на консоль с помощью функции console.log()
.
И определим в той же папке файл main.js, в котором подключим выше определенный модуль message.js:
import "./message.js";
Здесь мы просто испортируем модуль message.js
. В данном случае предполагается что оба модуля - main.js и message.js будут находиться в одной папке, поэтому при импорте указан путь "./message.js",
где "./" указывает на ту же папку, где расположен файл main.js.
Пусть у нас есть html-страница index.html, на которой подключается файл main.js:
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>METANIT.COM</title> </head> <body> <script type="module" src="main.js"></script> </body> </html>
В итоге при выполнении страницы в браузере в его консоли мы увидим результат работы компонентов подключенного модуля:
Hello METANIT.COM
При таком подключении будут выполняться все вызовы функций модуля message.js, однако все определенные и не экспортируемые компоненты в этом модуле из вне будут недоступны. Так, мы не можем в модулей main.js написать так:
import "./message.js"; console.log(messageText); // Ошибка ReferenceError: messageText is not defined
Хотя мы и подключили модуль message.js, но его переменная messageText
нам недоступна. Так как она не экспортируется, и соотвестветвенно здесь
мы ее не можем импортировать и использовать.
Такой способ импорта может показаться бессмысленным. Тем не менее мы можем воспользоваться преимуществами модуля, например, возможностью использовать выражения await без определения асинхронных функций. Например, изменим модуль message.js следующим образом:
const sum = (x, y)=>Promise.resolve(x + y); const value = await sum(5, 3); console.log("Результат асинхронной операции:", value);
Для простоты здесь определена константа sum
, которая представляет промис для вычисления суммы двух чисел. И модуль позволяет использовать
нам выражения await верхнего уровня для получения результата из промиса без определения и вызова асинхронной функции.