Page 322 - Браун Э. - Изучаем JavaScript. Руководство по созданию современных веб-сайтов - 2017
P. 322

полезно знать,  как  Node ищет импортируемые модули,  особенно когда наступает
       время поиска проблемы в модулях стороннего производителя.
          Не помещайте те модули, которые вы пишете сами, в каталог node  _  modules. Ра­
       ботать это будет, но особенность каталога node  _  modules в том, что он может быть
       удален утилитой npm в любой момент и воссоздан из зависимостей, перечисленных
       в файле package . j son (см. главу 2).
          Вы можете, конечно, опубликовать собственный модуль с помощью утилиты npm
       и управлять им, используя npm, но тогда вы должны избегать внесения в него изме­
       нений непосредственно в каталоге node _ modules!


                                               n
       Измен н и е   параметров моду ей
                е
                              n
       с помощью моду ей - функций
          Обычно модули экспортируют объекты, а иногда и одну функцию.  Однако есть
       и другой популярный сценарий их использования - модуль, который экспортирует
       функцию, предназначенную для немедленного вызова. Речь идет о том, что возвра­
       щаемое модулем значение само по себе является функцией, которая сразу же вы­
       зывается. Другими словами, вы не используете далее в своей программе то, что воз­
       вращает модуль, а вызываете эту функцию и  используете то, что она возвращает.
       Этот сценарий используется, когда нужно  изменить  параметры модуля либо полу­
       чить информацию об окружающем контексте. Давайте рассмотрим реальный пакет
       npm debug. При импортировании функции debug ей передается текстовая строка,
       которая будет использоваться как префикс при выводе отладочных сообщений. Бла­
       годаря этому можно будет различать сообщения, выведенные из различных частей
       программы.

                                 g
                                         n
       const  debug  =  require ( ' debu ' )  ( ' mai ' )  ;    11  обратите  внимание,  что  мы
                                              1 1   сразу  вызываем  функцию,  которую
                                              / /  возвращает  модуль
                   о
       dеЬug ( " начал " )  ;                 / /  выводит
                                              1 1   "main  начало  +Oms ",  если
                                              1 1   отладка  будет  разрешена
                  Чтобы разрешить отладку с использованием библиотеки debug, уста­
                  новите переменную окружения DEBUG. Для нашего примера мы устано­
                  вили бы DEBUG=main. Вы можете также установить  DEBUG=*, что раз­
                  решает вывод всех отладочных сообщений.

          Из этого примера ясно, что модуль debug возвращает функцию (поскольку мы
       непосредственно  вызываем  это  как  функцию)".  и  эта  функция  сама  возвраща­
       ет функцию, которая "помнит" строку,  переданную первой функции.  По сути мы



                               Изменение параметров модулей с помощью модулей-фун к ций   325
   317   318   319   320   321   322   323   324   325   326   327