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

Оказывается, Node импортирует каждый конкретный модуль только один раз при
       запуске приложения Node. Таким образом, даже при том, что мы импортируем свой
       модуль debug дважды, Node "помнит': что мы уже это импортировали раньше, и ис­
       пользует тот же экземпляр. Таким образом, даже при том, что debugl и debug2 - это
       отдельные функции, в их обеих используется ссылка на одну и ту же переменную
       lastMessage.
          Такое поведение программы вполне безопасно и желательно. По соображениям
       производительности, экономии памяти и удобства сопровождения, модули должны
       загружаться только один раз!

                  Сценарий импортирования, который мы использовали при создании
                  нашего самодельного модуля debug, подобен тому, что используется
                  и для его nрm-тезки. Но если нам действительно нужно получить не­
                  сколько журналов отладки с независимым хронометражем, то пере­
                                s
                  менную  l a s t Me s a ge, хранящую временную  метку,  нужно  переме-
                  стить в тело функции, которую возвращает модуль. Т о гда каждый раз
                  при создании регистратора ей будет присваиваться новое, независи­
                  мое значение.


       Доступ к файn      овой системе

          Во многих книгах по программированию доступ к файловой системе рассматри­
       вается с самого начала, поскольку это критически важная часть "обычного" програм­
       мирования.  Бедный JavaScript:  вплоть до появления Node он не был членом клуба
       файловой системы.
          В примерах из этой главы подразумевается, что корневой каталог вашего проекта
       /home/ <jdoe>/fs. Это типичный путь к каталогу в системах Unix, только нужно вме­
       сто <jdoe> подставить имя вашей учетной записи. Т е   же принципы применимы и к
       системе Windows (в которой корневой каталог вашего проекта мог бы располагаться
                     r
       в папке  :   \Use s \ <John  Doe>\Document \ f s).
                                            s
              С
          Чтобы создать файл, используйте метод fs . wri teFile. Создайте в корневом ката­
       логе своего проекта файл write . j s.
       const  fs  =  require ( ' f s  ' ) ;
                    '
        s
       f  .  wri teFile (  h ello . txt ' ,  ' П ривет  из  Node !  ' ,  function ( err)  {
                                   g
                                                            л
           if ( e rr)  return  console . l o ( ' Oшибкa  при  записи  в  фай . ' ) ;
       } )   ;
          Этот код создаст файл hello . txt в том каталоге, в котором вы находились при
       запуске приложения wri te . j s. Здесь подразумевается, что вы имеете права доступа
                                          а
       по записи к этому каталогу и что в к талоге нет заранее созданного файла только


                                                       Доступ к файловой системе   327
   319   320   321   322   323   324   325   326   327   328   329