В этой части учебника мы рассмотрим модули в Node.js, как их подключать и создавать, ну и конечно же узнаете как с ними работать, будет очень интересно.
Создание модeля:
Для начала разберём в Node.js написание модулей, для этого создадим не большой объект во файле «user.js», вот что как он выглядит:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | const user = { name: "Вася", surname: "Пупкин", SayName: function() { console.log(this.name, this.surname) }, SayHello: function() { console.log("Привет") }, SayBye: function() { console.log("Пока") }, } module.exports = user |
То есть мы тут создали объект с двумя свойствами и методами, но самое интересное в конце, для того чтобы экспортировать наш объект, мы используем module.exports
.
Тут стоит сказать, что это за объект module
, он нужен, чтобы представлять ссылку на текущий модуль, а свойство exports
, собирает все свойства и методы которые нужно экспортировать из файла.
Теперь перейдём импортированию этого объекта, для этого создадим файл index.js
и напишем что то типа этого:
1 2 3 4 5 | const User = require('./user') User.SayName() User.SayHello() User.SayBye() |
То есть с помощью функции require()
, мы можем подключать различные модули и не только свои, но об этом чуть ниже. Ещё вы наверное видите, что мы не используем расширение файла, это работает, только если вы подключаете JavaScript файлы.
Чуть ниже мы с помощью методов из модуля выводим имя в терминал, и другие надписи.
Давайте запустим программу, для этого зайдите в терминал, в папку с проектом, и воспользуетесь командой node index.js
:
Как видите всё нормально работает, так как и задумывалось, но ещё стоит показать одну вещь, дело в том, что как вы заметили, но мы не используем по сути свойства имени и фамилии, но мы их тоже импортируем, что нагружает программу.
Для того чтобы взять только конкретную часть модуля, надо использовать деструктуризацию объекта, вот как мы теперь изменим наш пример:
1 2 3 | const {SayHello} = require('./user') SayHello() |
Мы импортировали только метод SayHello()
, если мы попытаемся вызвать другой, то у нас просто не чего не выйдет.
Также стоит сказать, если вы попробуете импортировать SayName()
и вызвать, то у вас выводиться undefined
, так как он внутри себя использует cвосйтва из контекста всего объекта, поэтому вам надо будет в таком случае изменить контекст методу, с помощью .call()
.
Стандартные модули:
На последок покажу стандартные модули которые есть в Node.js, точнее это будет просто список, ещё скажу что чтобы их подключить, не надо путь до файла писать, а просто название.
Вот список:
- os — Модуль для получения информации об операционной системе и аппаратной части компьютера;
- events — Модуль для получения событий в Node.js;
- http — Модуль для создания HTTP сервера;
- fs -Модуль для работы с файлами;
- stream — Модуль для работы с потоками;
Их не много, но они все полезные.
Вывод:
В этой части учебника по Node.js, мы разобрали модули, разобрали как создавать новые и какие есть стандартные.