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

Синхронные функции файловой системы  заманчиво удобны. Но если
                  вы пишете веб-сервер или сетевое приложение, помните, что скорость
                  его работы будет максимальной при асинхронном выполнении. В этих
                  случаях всегда следует использовать асинхронные версии функций вво-
                  да-вывода. Если вы пишете утилиту командной строки, использование
                  синхронных версий функций обычно не представляет особой проблемы.

          Используя метод fs . readdir, вы можете вывести список файлов в каталоге. Соз­
                  l
       дайте файл  s . j s.
       const  fs  =  require ( ' f s  ' )  ;

       fs . readdir (�dirname ,  function ( e rr,  fil s )    {
                                             e
           if ( e rr)  return  console . e rror ( ' Heвoзмoжнo  прочитать  содержимое  каталога ' ) ;
           console . l og  ( ' Coдepжимoe  каталога $ {    dirname )  :   ' ) ;
           console . l og ( f iles . m ap ( f   =>  ' \ t  '   +  f )   . j oi ( ' \ n  ' ) ) ;
                                                 n
       )  )   ;
          В модуле f s содержится довольно много функций файловой системы; вы можете
       удалять файлы (fs . un i nk), перемещать или переименовывать их (fs . rename), полу­
                           l
       чать информацию о файлах и каталогах (fs . stat) и многое другое. Более подробная
                                                                                 s
       информация по этой теме приведена в документации по Node API (https : / /nodej  .
                       )
       org/a i / f s . html .
            p
                                   s
       П е ременная      proce s
          Каждая выполняющаяся программа Node имеет доступ к переменной process, ко­
       торая позволяет получать информацию о выполнении текущего процесса и управлять
       им. Например, если ваше приложение встречается с ошибкой, настолько серьезной, что
       продолжение выполнения становится нецелесообразным или бессмысленным (неустра­
       нимая ошибка  (fatal error)), вы можете немедленно остановить ее выполнение, вызвав
       метод process  e xit. Можно также передать числовой код завершения (exit code), ко­
                     .
       торый используется сценариями для определения, успешно ли завершилась программа.
       Традиционно код завершения О означает "отсутствие ошибки': а отличный от нуля код
       означает ту или иную ошибку. Рассмотрим сценарий, который обрабатывает файлы  . txt
       в подкаталоге data: если никаких файлов для обработки нет и делать нечего, то програм­
       ма завершает работу немедленно, но это не ошибка. С другой стороны, если подкаталог
       da ta не будет существовать, то эта проблема будет считаться более серьезной, и про­
       грамма должна вернуть код ошибки. Вот как могла бы выглядеть эта программа.
       const  fs  =  require ( ' f s  ' )  ;

                                          e
                      a
       fs . readdir ( ' dat ' ,   func i on ( e rr,  fil s )    {
                             t
           i f ( e rr)  {
       330      Глава 20. Платформа Node
   322   323   324   325   326   327   328   329   330   331   332