Лазловеюлы
Что они, как их использовать и как их не использовать
(Обратите внимание, что эта статья была написана после выпуска Node.js 6.1.0)
TL; доктор
- Подумайте о Module.exports в качестве переменной, которая возвращается из требуемого (). Это пустой объект по умолчанию, и это нормально, чтобы изменить на что угодно.
- Экспорт? Ну, сам “экспорт” никогда не возвращается! Это просто ссылка на модуль. Экспорты; Удобная переменная, чтобы помочь модулю авторов писать меньше кода. Работа со своими свойствами безопасна и рекомендуется.
exports.method = function() {…} vs.
module.exports.method = function() {…}Простой пример модуля
Во-первых, нам нужен пример кодовой базы. Начнем с простого калькулятора:
Использование:
Модуль обертки
Node.js внутренние обертывания Все требуют () – ED модули в функциональной обертке:
Объект модуля
Переменная « Модуль » – это объект, представляющий текущий модуль. Это это локальный для каждого модуля И это также частное (доступно только из кода модуля):
Module.exports.
- Это ссылка на объект, которая возвращается из требуемых () вызовов.
- Он автоматически создается Node.js.
- Это просто ссылка на простой объект JavaScript.
- Это также пустое по умолчанию (наш код придает ему метод «Add ()»)
Есть два способа, которые мы можем использовать Module.exports:
- Прикрепление общественных методов К нему (как мы сделали в примере калькулятора).
- Замена Это с нашим пользовательским объектом или функцией.
Зачем заменить это? При замене мы можем вернуть любой произвольный экземпляр некоторых других класс. Вот пример, написанный в ES2015:
Выше «калькулятор-база» экспортирует класс. Давайте расширим «калькулятор» класса и экспортируйте экземпляр на этот раз:
Использование:
Экспорт псевдонимов
- «Экспорт» – это просто удобная переменная, поэтому модуль авторы могут написать меньше кода
- Работа со своими свойствами безопасна и рекомендуется. (например.:…)
- Экспорт не возвращается требованием () (module.exports есть!)
Вот некоторые хорошие и некоторые плохие примеры:
Примечание: Это обычная практика для замены модуля. Экспортировки с пользовательскими функциями или объектами. Если мы сделаем это, но все еще хотели бы продолжать использование «экспорта» сокращения; Тогда «экспорт» должен быть переопределен на наш новый пользовательский объект (также сделано в коде выше в строке 12):
exports = module.exports = {}exports.method = function() {...}Заключение
Переменная по имени Экспорт Это не совсем экспортируется, сбивает с толку, особенно для новичков в Node.js. Даже официальная документация имеет чуть странный на нем:
Мой взять тот код не волшебный. Разработчики всегда должны стремиться добиваться более глубокого понимания платформ и языков, которые они используют. Тем самым; Программисты получают ценную уверенность и знание, которое, в свою очередь, положительно влияет на качество кода, архитектуру системы и производительность.
Спасибо за чтение моего поста. Обратная связь и мысли всегда приветствуются в разделе комментариев.
Lazlojuly
Статьи по Теме:
Источники:
Оформить заказ мой новый блог в тестировании единиц блока:
Как начать с тестирования подразделения? Часть № 1. Я думаю, что многие из нас могут относиться к ситуации, изображенной выше. Место, где тестирование подразделения считается рутией. medium.com
Оригинал: “https://www.freecodecamp.org/news/node-js-module-exports-vs-exports-ec7e254d63ac/”