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

