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