Данный учебник посвящен NodeJS - серверному JavaScript. Перед изучением данного учебника вам уже необходимо: знать язык JavaScript, иметь установленный NodeJS, представлять себе работу протокола HTTP,... Читать дальше
Справочник по NODE JS
Давайте запустим таймер, который будет каждую секунду выводить что-нибудь в консоль: setInterval(function() { console.log('!'); }, 1000); Запущенный нами таймер будет работать вечно: пока мы не... Читать дальше
По умолчанию NodeJS использует модули по стандарту CommonJS. Так сложилось исторически. Однако, начиная с версии 13.2.0 появилась полноценная поддержка ES модулей. Так как ES модули - это официальный ... Читать дальше
Сейчас мы научимся работать с файловой системой. За это в NodeJS отвечает встроенный модуль fs, который необходимо импортировать: import fs from 'fs'; Каждый метод модуля fs существует в двух вари... Читать дальше
В данном уроке мы разберемся с синхронной работой с файлами, так как она более простая для понимания. Синхронное чтение файла Для синхронного чтения файла используется метод readFileSync. Первым п... Читать дальше
Давайте теперь рассмотрим асинхронную работу с файловой системой. Как правило, в NodeJS все методы модуля fs существуют в двух вариантах: в синхронном и асинхронном. Например, для синхронного чтени... Читать дальше
С методами модуля fs асинхронно можно работать не только через коллбэки, но и через промисы. Для этого есть специальное свойство promises, содержащее в себе промисные аналоги методов для работы с файл... Читать дальше
Давайте теперь вместо then будем использовать альтернативный синтаксис async-await. В этом случае мы получим возможность обращаться с нашим асинхронным кодом также просто и удобно, как с синхронным. ... Читать дальше
Вспомним, как мы подключали модуль fs: import fs from 'fs'; После такого подключения нам будут доступны промисные варианты методов этого модуля через fs.promises: fs.promises.readFile('readme.t... Читать дальше
Как вы уже знаете, в параметр методов чтения или записи следует писать имя файла. Это, однако, работает только в том случае, если читаемый файл лежит в той же папке, в которой запускается наш скрипт. ... Читать дальше
Если ваш NodeJS работает в стиле CommonJS, то в файлах с вашими скриптами будет доступна константа __dirname: console.log(__dirname); В ES модулях, однако, эта константа была убрана. Впрочем, ее н... Читать дальше
Давайте научимся проверять существование файла или папки. В современном NodeJS это делается особым образом через метод fs.access, проверяющий возможность доступа к файлу. Для начала импортируем аси... Читать дальше
Представим, что у вас есть достаточно большой файл, скажем размером в 100 мегабайт. Пусть мы хотим что-то сделать с данными этого файла. Очевидно, что для этого нужно прочитать содержимое этого файла ... Читать дальше
Ситуация, в которой нам нужно прочитать данные из одного потока и записать их в другой, является достаточно распространенной. Для упрощения такой операции придуманы каналы (англ. pipes). Давайте по... Читать дальше
Давайте теперь развернем HTTP сервер на NodeJS . Этот сервер будет принимать запросы от браузера и отдавать в ответ HTML код страниц. Для начала нам нужно импортировать модуль http: import http ... Читать дальше
С помощью свойства statusCode мы указываем код HTTP ответа. Как правило это код 200, сообщающий браузеру о том, что все ок и страница найдена: http.createServer((request, response) => { respon... Читать дальше
Вам следует понимать, что наш сервер, будучи один раз запущенным, обрабатывает запросы всех пользователей нашего сайта. Этим подход NodeJS отличается от подхода PHP в котором скрипт запускается, отраб... Читать дальше
Объект запроса request содержит данные запроса браузера к серверу. В этом объекте свойство url содержит адрес запрошенной страницы, свойство method содержит HTTP метод запроса, а свойство headers соде... Читать дальше
При выводе URL сайта вы могли обратить внимание на то, что кроме запрошенного адреса в консоль выводится еще и '/favicon.ico'. Дело в том, что при заходе на сайт браузер автоматически запрашивает ф... Читать дальше
Давайте теперь будем выдавать разное содержимое при обращении к разным URL: http.createServer((request, response) => { if (request.url != '/favicon.ico') { if (request.url == '/page1') { ... Читать дальше