NPM – это больше, чем просто >npm install
. Он читает файлы >package.json
, содержащие информацию в формате JSON про программу или библиотеку, в частности, на каких библиотеках она основана. Выполнение >npm install
в директории, содержащей такой файл, автоматически приводит к установке всех зависимостей, и в свою очередь их зависимостей. Также инструмент >npm
используется для размещения библиотек в онлайновом хранилище NPM, чтобы другие люди могли их находить, скачивать и использовать.
Больше мы не будем углубляться в детали использования NPM. Обращайтесь на npmjs.org за документацией поиску библиотек.
Один из самых востребованных встроенных модулей Node – модуль >“fs”
, что означает «файловая система». Модуль обеспечивает функционал для работы с файлами и директориями.
К примеру, есть функция >readFile
, читающая файл и делающая обратный вызов с содержимым файла.
>var fs = require("fs");
>fs.readFile("file.txt", "utf8", function(error, text) {
> if (error)
> throw error;
> console.log("А в файле том было:", text);
>});
Второй аргумент >readFile
задаёт кодировку символов, в которой нужно преобразовывать содержимое файла в строку. Текст можно преобразовать в двоичные данные разными способами, но самым новым из них является UTF-8. Если у вас нет оснований полагать, что в файле содержится текст в другой кодировке, можно смело передавать параметр >"utf8"
. Если вы не задали кодировку, Node выдаст вам данные в двоичной кодировке в виде объекта >Buffer
, а не строки. Это массивоподобный объект, содержащий байты из файла.
>var fs = require("fs");
>fs.readFile("file.txt", function(error, buffer) {
> if (error)
> throw error;
> console.log("В файле было ", buffer.length, " байт.",
> "Первый байт:", buffer[0]);
>});
Схожая функция, >writeFile
, используется для записи файла на диск.
>var fs = require("fs");
>fs.writeFile("graffiti.txt", "Здесь был Node ", function(err) {
> if (err)
> console.log("Ничего не вышло, и вот почему:", err);
> else
> console.log("Запись успешна. Все свободны.");
>});
Здесь задавать кодировку не нужно, потому что >writeFile
полагает, что если ей на запись дали строку, а не объект >Buffer
, то её надо выводить в виде текста с кодировкой по умолчанию UTF-8.
Модуль >“fs”
содержит много полезного: функция >readdir
возвращает список файлов директории в виде массива строк, >stat
вернёт информацию о файле, >rename
переименовывает файл, >unlink
удаляет, и т. п. См. документацию на nodejs.org.
Многие функции >“fs”
имеют как синхронный, так и асинхронный вариант. К примеру, есть синхронный вариант функции