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

для чтения hello . txt. Каждый раз при запуске приложения Node, оно будет исполь­
       зовать текущий рабочий каталог, который может отличаться от того, где располо­
       жен сам файл, как показано ниже.

       $  cd  /hom / j d oe/fs
                e
       $  node  write . j s    #  текущий  рабочий  каталог  /home/jdoe/fs
                         #  создается  /home/jdoe/fs/hello . txt
       $  cd  . .        #  теперь  текущий рабочий  каталог  /home/jdoe
       $  node  fs /write . j s   #  создается  /home/jdoe/hello . t x t
                                                     d
          В Node существует специальная переменная, _  i  rname, которая всегда содержит
       путь к каталогу, в котором располагается файл исходного кода. Например, мы можем
       изменить свой пример так.

       const  fs  =  require ( ' fs  ' ) ;

       fs . writeFile (_dirname  +  ' / hello . txt ' ,
                            e
               ' П ривет  из  Nod ! ' ,   func i on ( e rr)
                                     t
                                                              л
           i f ( e rr)  return  console . e rror ( ' Oшибкa  при  записи  в  фай . ' ) ;
       } )   ;
                                                                   l
          Т е перь приложение wri te . j s  всегда будет создавать файл  he l o . txt в  катало­
       ге  /hom / < j doe>/fs (где находится write . j s .   Использование конкатенации строк
                                                 )
              e
       для объединения переменной _d r name  и нашего имени файла - не очень хоро­
                                      i
       шая идея. Это может вызвать проблемы на компьютере под управлением Windows,
       поскольку разделитель имен каталогов там другой.  Поэтому в Node в модуле path
       предусмотрены независимые от платформы утилиты для работы с именами файлов
       и путями. Таким образом, мы можем переписать этот модуль так, чтобы он без про­
       блем работал на любой платформе.
       const  fs  =  require ( ' f s  ' ) ;
       const  path  =  require ( ' pat ' ) ;
                               h
                   (
                        j
       fs . writeFile  p ath .  o in (_ dirname ,  ' h ello . tx ' ) ,
                                                t
               ' П ривет  из  Node !  ' ,   function ( e rr )
                              l
                                                              л
           i f ( e rr )  return  conso e . error ( ' Oшибкa  при  записи  в  фай . ' ) ;
       } )   ;
                      j
          Метод path .  o in объединяет элементы пути, используя тот разделитель катало­
       гов, который принят в текущей операционной системе, что является хорошей прак­
       тикой.
          Что если мы хотим теперь прочитать содержимое этого файла? Для этого мы ис­
       пользуем метод fs . readFile. Создайте файл read. j s.
       const  fs  =  require ( ' f s  ' )  ;
       const  path  =  require (  ' pat ' )  ;
                               h


       328     Глава 20.  Платформа Node
   320   321   322   323   324   325   326   327   328   329   330