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
   314   315   316   317   318   319   320   321   322   323   324