Page 317 - Браун Э. - Изучаем JavaScript. Руководство по созданию современных веб-сайтов - 2017
P. 317
вызовы функций операционной и файловой системы, недоступны в браузере из со
ображений безопасности (можете себе представить, что сделали бы хакеры, если бы
они смогли получить доступ к вашим файлам прямо из браузера?). Другие возмож
ности, такие как создание веб-сервера, для браузера просто бесполезны.
Важно понять, что составляет основу JavaScript и что является частью API. Про
граммист, который всегда писал код для браузера, мог бы вполне резонно полагать,
что объекты window и docurnent - это просто часть JavaScript. Однако это части API,
предоставляемых средой браузера (как было описано в главе 1 8 ). В этой главе мы
будем рассматривать API, предоставляемые платформой Node.
Если это еще не сделано, установите среду Node и npm (см. главу 2).
n
Моду и
Модули - это механизм для упаковки кода и применения в нем пространств
имен. П р остранства имен (namespacing) - это средство для предотвращения кон
фликтов имен. Например, если Аманда и Тайлер написали два варианта функции
calculate, а вы просто берете и копируете их код в свою программу, то вторая
функция заменит первую. Пространства имен позволяют тем или иным образом об
ращаться к функции calculate "от Аманды" и к функции calculate "от Тайлера".
Давайте рассмотрим, как модули Node решают эту проблему. Создайте файл amanda .
j s.
function calculate а , х , n ) {
(
i f ( x === 1 ) return a * n ;
return a* ( l - Mat h . pow ( x , n ) ) / ( 1 - х ) ;
modul . exports = calculate ;
e
s
И создайте файл tyler . j .
function calcula e ( r ) {
t
w
return 4 / З * Math . P I * Math . p o ( r , 3 ) ;
e
a
modul . exports = calcul t e ;
Вполне понятно, что Аманда и Тайлер е проявили фантазии при выборе имен
н
своих функций, но для примера мы позволим этому непотребству продолжиться.
Важная строка в обоих этих файлах - module . exports = calculate ; . Конструкция
modul e - это специальный объект, который введен в Node ради реализации моду
лей. Все то, что будет присвоено его свойству exports, будет экспортироваться из
этого модуля. Теперь, написав несколько модулей, давайте посмотрим, как их можно
320 Глава 20. Платформа Node

