Закончил на Хекслете третий проект по фронетенду. По сравнению с предыдущими двумя он имеет пару отличий.

  1. Это первый проект, имеющий прямое отношение к вебу, так как в нем нужно сделать сайт, а не консольную программу.
  2. В нем заметно меньше прямых инструкций. Сказано, что приложение должно делать, но способ, которым этого достичь, приходтится искать самостоятельно.

В ходе проекта узнал много нового:

surge.sh

Проект деплоится на surge.sh. Сервис оказался крутейшим — статический сайт деплоится одной командой из терминала, что намного удобнее digital ocean, которым я пользовался раньше. Дополнительно подключил сурж к тревису. После каждого коммита он автоматически запускает тесты, и, если они проходят, проект сразу деплоится.

Вебпак

Я хоть и имел дело с вебпаком до этого, но не использовал многие из его возможностей. Научился генерировать из вебпака html и подключать через него бутстрап.

Бутстрап

Научился пользоваться фреймворком для верстки страниц, которым пользуется, половина сайтов в интернете. Он позволяет добавлять на страницу стандартные элементы, не задумаваясь, о том, как создавать их вручную.

RSS

Научился работать с RSS. Несмотря на то, что читаю новости при помощи RSS примерно лет десять, никогда не задумывался о том, как оно устроено внутри. Оказалось, что RSS-поток — это просто xml-файл определенной структуры.

Промисы

Пожалуй, основная задача проекта — научится писать асинхронный код при помощи промисов. Для скачивания RSS по http используется библиотека axios. Сложнее всего оказалось реализовать автоматическое обновление RSS-потоков при помощи промисов.

Также темой проекта, насколько я понял, было показать студенту, насколько это муторное дело — работать с ДОМом вручную. После осознания этого на собственном опыте намного проще понять, для чего предназначены всякие фронтенд-фреймворки типа реакта.

rss-reader.surge.sh — задеплоенное приложение. Через форму добавляются RSS-потоки, например http://lambda-the-ultimate.org/rss.xml. Статьи из добавленных потоков обновляются каждые пять секунд.