
#8 – Отслеживание URL. Шаблоны HTML
Видеоурок
Потоки данных
Потоки в Node JS – отличное средство, которое позволяет передавать огромные данные постепенно по небольшим кусочкам. Представьте себе огромную карту мира, которая загружается не сразу, а лишь небольшими частями. Таким образом пользователь сразу сможет просматривать отдельные её части, пока остальная карта будет еще подгружаться.
Если мы имеем большой файл, то пользователю не придется ждать пока он полностью загрузиться, так как отдельные его части будут доступны, практически, сразу же.
Для работы с потоками необходимо использовать модуль fs
. В нём существуют методы createReadStream и createWriteStream, позволяющие читать и записывать данные в файлы.
Для вывода данных можно использовать событие под названием «data». В событии можно выводить отдельные кусочки данных как только они будут переданы и готовы к просмотру.
Метод pipe
Из-за частой реализации потоков данных была придумана функция, что автоматизирует весь процесс и позволяет его выполнить всего за 1 строчку кода. Функция называется pipe()
и записывается следующим образом:
fs.createReadStream(__dirname + '/file.html').pipe(res);
Использование функции pipe() гораздо упрощает код и выглядит намного читабельнее.
Маршрутизация
Давайте научимся отслеживать URL-адрес и в зависимости куда перешел пользователь.
Для этого существует параметр request (запрос), который содержит значение url
(адрес страницы на данный момент). Все что необходимо делать, так это проверять данное значение и в зависимости от него выдавать информацию пользователю.
Пример отслеживания URL:
const server = http.createServer((req, res) => {
// В req.url находится текущий адрес страницы
if (req.url === '/') {
res.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'});
fs.createReadStream(__dirname + '/index.html').pipe(res);
} else if (req.url === '/news/best/articles') {
res.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'});
fs.createReadStream(__dirname + '/news-best.html').pipe(res);
}
})
Мы проверяем «req.url» и при этом используем три знака равенства чтобы проверить не только на одинаковые значения, но и на одинаковый тип данных. Таким образом мы можем проверять любой URL-адрес и выдавать ту страницу, что будет подходить под нужный адрес.
Подобная реализация отслеживания URL может показаться сложной и совсем нечитабельной. Это действительно так, поэтому в курсе мы дополнительно будем изучать библиотеку Express, которая упрощает подобные задачки и делает код чище.
Материалы для курса
Чтобы скачивать материалы к видеокурсам необходимо оформить подписку на сайт
Онлайн редактор кода
Задание к уроку
Необходимо оформить подписку на проект, чтобы получить доступ ко всем домашним заданиям
Большое задание по курсу
Вам необходимо оформить подписку на сайте, чтобы иметь доступ ко всем большим заданиям. В задание входит методика решения, а также готовый проект с ответом к заданию.
PS: подобные задания доступны при подписке от 1 месяца
Также стоит посмотреть