Page 319 - Браун Э. - Изучаем JavaScript. Руководство по созданию современных веб-сайтов - 2017
P. 319
a
const amanda = require ( ' . /amand . j s ' ) ;
console . l og ( a manda . geometricSum ( l , 2 , 5 ) ) ; / / выводит 31
console . l og ( a manda . quadraticFormula ( l , 2, -1 5 ) ) ; // выводит [ 3 , -5 }
Здесь нет никакого чуда: модуль просто экспортирует обычный объект с функ
циональными свойствами (не позволяйте сокращенному синтаксису ЕSб себя запу
тать; это обычные функции, являющиеся свойствами объекта). Данная парадигма
настолько распространена, что для нее был предусмотрен сокращенный синтаксис,
использующий специальную переменную exports. Мы можем переписать экспорти
руемый код Аманды более компактно.
exports . geometricSum = function ( a , х, n) {
i f ( x === 1 ) return a*n;
return a* ( l - Math . pow ( x , n ) ) / ( 1 - х ) ;
} ;
(
exports . ari thmeticSum function n ) {
return ( n + l ) * n / 2 ;
} ;
exports . quadraticFormula = function ( a , Ь, с )
const D = Math . s qrt (b*b - 4*а*с ) ;
return [ ( - Ь + D ) / ( 2 * а ) , ( - Ь - D ) / ( 2 * а ) ] ;
} ;
Сокращение "exports" работает только при экспорте объектов; если
вы хотите экспортировать функцию или некое другое значение, ис
пользуйте module . exports. Кроме того, вы не можете их смешивать:
используйте либо одно, либо другое.
n
n m
Базовые, файловые и р -моду и
Модули относятся к трем категориям: базовые (core module), файловь1е (file module)
и п р т-модули (npm module). Имена базовых модулей зарезервированы; эти модули,
например, fs и o s , предоставляет сама среда Node (мы их обсудим далее в этой гла
ве). С файловыми модулями мы уже встречались, когда создавали файл с экспорти
руемой функцией, в котором присваивалось нечто свойству module . exports , а затем
использовали этот файл в других программах. Модули npm - это обычные файловые
модули, которые находятся в специальной папке, называемой node _ modules. Когда вы
используете функцию require, Node определяет тип модуля (их описание приведены
в табл. 20.1 ) из передаваемой строки.
322 Глава 20. Платформа Node

