[МУЗЫКА]
На этом уроке мы узнаем о том, как мы можем писать простые уведомления.
Мы также узнаем о модулях Node и о том,
как модули Node позволяют нам организовать наши приложения в несколько файлов.
Мы также узнаем о различных видах модулей Node и
как мы можем импортировать модули Node в наши файлы нашего приложения Node и
использовать их в нашем приложении.
Во-первых, давайте узнаем о модулях Node чуть более подробно в этой лекции.
JavaScript, когда он был впервые разработан
был предназначен для того, чтобы быть языком сценариев, который будет использоваться в браузере.
Таким образом, небольшая область, в которой она должна была использоваться, - это браузер.
Теперь, как вы понимаете из этой специализации, JavaScript вышел
далеко за рамки своего первоначального намерения, и теперь используется для написания приложений.
Оба для запуска с использованием фреймворков в браузере, а
также для запуска приложений на стороне сервера, как мы увидим в этом курсе.
Первоначально JavaScript никогда не был разработан с какими-либо общими библиотеками.
Если вы посмотрите на стандартные языки программирования, такие как C, C ++, Java и так далее,
все они имеют стандартные библиотеки, которые позволяют вам получить доступ к
базовому оборудованию.
А также предоставить структурированный способ организации приложения в
несколько файлов, а затем объединить их вместе при создании приложения.
JavaScript никогда не имел такой поддержки, когда он начинался.
Потому что, как мы понимаем, JavaScript не был разработан
для той цели, для которой он используется сегодня.
Но, конечно,
люди поняли трудности, когда вам нужно расширить JavaScript
за пределы одного файла, который используется в качестве языка сценариев для браузера.
Теперь, если у вас очень большое приложение JavaScript,
становится громоздким писать весь код в одном файле.
И, очевидно, вы хотите, чтобы результаты могли разбить ваше приложение на
несколько фактов.
Теперь, в отличие от традиционных языков программирования, JavaScript никогда не имел способа
распространения кода на несколько файлов, а затем объединения их вместе.
Таким образом, здесь появился API CommonJS, чтобы заполнить этот
пробел, который заполняет потребности в каком-то общем приложении.
И этот формат CommonJS определяет формат модуля, который может быть использован для
разбиения вашего приложения JavaScript на несколько файлов.
И узел принимает этот формат CommonJS для
организации нашего приложения JavaScript в несколько файлов.
И в JavaScript, с форматом CommonJS,
каждый файл становится собственным модулем Node.
Итак, давайте узнаем немного больше о модулях Node в остальной части этой лекции.
Как я только что упомянул,
каждый файл в приложении Node становится собственным модулем Node.
Таким образом, файл или файл JavaScript определяет границу для модуля Node.
Таким образом, внутри этого файла спецификация CommonJS
предоставляет переменную, называемую переменной модуля, которая является объектом JavaScript.
И это дает вам доступ к текущему определению модуля в файле.
И на этом объекте модуля у вас есть
свойство module.exports, которое определяет экспорт из текущего модуля.
Поэтому, когда вы назначаете что-то свойству module.exports,
это становится экспортируемым значением из текущего модуля.
Таким образом, когда этот модуль импортируется в другой файл
нашего приложения Node, то все, что экспортируется из этого модуля,
становится доступным во втором приложении.
Мы рассмотрим пример в короткое время.
Когда вам нужно импортировать модуль в другой модуль,
это где функция require используется для импорта модуля.
Таким образом, как мы заметим в короткое время, функция require используется
для импорта модуля Node, который определен в другом файле в текущий файл
, так что он может быть использован в нашем приложении узла.
Модули узлов могут быть трех категорий.
У нас есть файловые модули Node, где мы определяем модуль Node
внутри файла, в нашем приложении, и мы используем его в нашем приложении.
Затем у нас есть основные модули, которые уже являются частью Node.
Дизайнеры узлов сохранили эти основные модули намеренно маленькими
, так что узел может быть сохранен маленьким.
А также обеспечить достаточную функциональность
, чтобы внешние дизайнеры модулей могли добавить в свои собственные
функциональные возможности, которые могут быть использованы при разработке приложений Node.
Таким образом, основные модули включают путь, файловую систему, os, util и несколько других.
Мы столкнемся с некоторыми из них, пока мы идем по этому курсу.
Тогда у нас есть внешние модули Node.
Это сторонние модули Node, которые разрабатываются разработчиками Node, а
затем становятся доступными через экосистему Node.
Таким образом, эти внешние модули Node могут быть установлены в нашей системе с помощью NPM.
Так много раз вы увидите нас, используя NPM install и
имя модуля Node, и это будет включено в
наше приложение Node_modules в папке с именем node_modules.
И мы встретимся с внешними модулями Node в более позднем уроке в этом курсе.
Как мы используем модули Node?
Когда вам нужно использовать модуль Node в другом файле Node в вашем приложении,
вы будете использовать функцию require.
Я кратко упомянул о функции require в одном из предыдущих
слайдов там.
Функция require для файловых модулей Node,
вы укажете это как require, а
затем укажите путь к файлу, который содержит модуль Node.
Таким образом, вы бы сказали require./, имя модуля, если файл существует
в текущей папке, записанной в которой ваше приложение Node существует.
Таким образом, это указывает относительный путь к файлу из текущего местоположения.
А также для основных и внешних модулей,
вы обычно указываете их, сказав require и имя модуля.
Вы явно указываете путь для него.
Если это основной модуль, он уже является частью узла, и поэтому
он будет автоматически включен.
Если это внешний модуль, то он будет установлен либо внутри
папки node_modules в текущей папке, либо если узел не
найдет внешний модуль в папке node_modules в текущей папке,
он перейдет к следующей папке более высокого уровня в поисках этого модуля Node.
Или следующая папка более высокого уровня и
вверх по иерархии, пока она не найдет модули Node, которые
затем будут импортированы для использования в вашем приложении Node.
Если он не может найти модуль Node вверх по иерархии,
то он, очевидно, вызовет ошибку, говорящую о том, что модуль Node отсутствует.
Этот способ организации очень полезен в том, как
структура приложения Node определяется, как мы встретимся
больше в более поздней части этого курса.
С этим быстрым введением в модули Node, давайте посмотрим на пример,
который мы будем делать в рамках упражнения, которое следует за этой лекцией.
Как мы узнали в этой лекции,
граница модуля Node определяется файлом, который содержит код здесь.
Итак, здесь у меня есть пример модуля Node, определенного как rectangle.js.
И там вы можете видеть, что я использую два экспорта здесь,
я говорю exports.perimeter и exports.area.
И вы увидите, что здесь я не использую module.exports, потому что
сам экспорт также является сокращенной версией module.exports.
Поэтому, если вы не хотите использовать module.exports полностью, но
вместо этого просто хотите экспортировать, то это еще один способ записи
тех элементов, которые экспортируются из текущих модулей Node.
Итак, здесь мы экспортируем две функции, периметр и
область из прямоугольного модуля Node.
Теперь, чтобы использовать этот модуль в другом файле,
давайте посмотрим на файл index.js.
И в самой первой строке в этом файле вы заметите, что она говорит
var rect = require и в кавычках,. /прямоугольник.
Таким образом, это указывает, что модуль прямоугольника будет важен здесь,
я использовал в этом конкретном файле приложения.
Так вот, как мы определяем модули Node, и
это пример файлового модуля Node.
Мы встретимся с
модулями ядра и внешнего узла в последующих уроках этого курса.
[ МУЗЫКА]