Основные возможности платформы Hexlet не доступны в вашем браузере. Пожалуйста, обновитесь.

Проект Загрузчик страниц

Уровень: 3. Старт проекта 08 мая 2017


Цель

Основная задача этого проекта, показать общие принципы работы с асинхронным кодом в js. Затрагиваемые темы:

  • Тестирование с использованием Mock/Stub
  • Активный файловый ввод/вывод
  • Работа с ошибками и исключениями
  • Знакомство с модулями nodejs: os, path, fs, url
  • Работа с DOM. Базовые манипуляции
  • Promises, Async/Await
  • Работа с HTTP

Описание

В рамках данного проекта необходимо реализовать утилиту для скачивания указанного адреса из сети. Принцип ее работы очень похож на то, что делает браузер при сохранении страниц сайтов.

Возможности утилиты:

  • Можно указать папку, в которую нужно положить готовый файл
  • Утилита скачивает все ресурсы указанные на странице и меняет страницу так, что начинает ссылаться на локальные версии

Пример использования:

$ page-loader --output /var/tmp https://hexlet.io/courses

✔ https://ru.hexlet.io/lessons.rss
✔ https://cdn2.hexlet.io/assets/application.css
✔ https://cdn2.hexlet.io/assets/favicon.ico
✔ https://cdn2.hexlet.io/assets/favicon-196x196.png
✔ https://cdn2.hexlet.io/assets/favicon-96x96.png
✔ https://cdn2.hexlet.io/assets/favicon-32x32.png
✔ https://cdn2.hexlet.io/assets/favicon-16x16.png
✔ https://cdn2.hexlet.io/assets/favicon-128.png

Page was downloaded as 'ru-hexlet-io-courses.html'

Изучите до начала проекта:

рекомендуемое

  1. Mock/Stub
  2. Как работает event loop