Overpriced coffee
В задании будем делать серверную часть для кофешопа
-
Поставь зависимости и запусти сервер. Перейди в директорию задачи и выполни команду
npm install
. После установки зависимостей, выполни командуnpm run start
. После запуска, перейди по адресу localhost:3000 -
Сделай так, чтобы сервер смог отдавать статические файлы из директории
/static
. В express для этого есть middlewareexpress.static
. Подбробнее можно прочитать здесь. Обрати внимание, что название директории по умолчанию не является частью пути. -
Сделай так, чтобы при заходе на
/
(корень сайта) происходил редирект на/menu
. Это можно сделать с помощью одного из методов response -
Изучи папку
/views
и файлmenu.hbs
. Добавь в меню ещё несколько напитков. Картинки можно взять из папки/static/img
или найти самому, например на Unsplash -
Сделай так, чтобы сервер смог отображать страницу корзины (
/cart
). Заготовку для страницы можно найти в файле/static/html/cart
, переделай её в/views/cart.hbs
. На текущем этапе у всех пользователей сайта корзина будет общая -
Сделай так, чтобы при клике на ссылку на странице меню, выбранный кофе добавлялся в корзину, а затем происходил редирект обратно в меню. Для этого пригодятся route parameters
-
Сделай так, чтобы при клике на ссылку оплатить текущий заказ завершался и корзина очищалась
-
Добавь страницу
/login
на которой будет возможность заполнить своё имя. Чтобы сохранить имя используй cookie(). Чтобы читать имя потребуются cookies иcookie-parser
middleware.
Обрати внимание, что форма посылается GET запросом. Чтобы прочитать параметры используй query. Не забудь поправить шаблон, чтобы в нём отображалось сохранённое имя.
Убедись, что случайно не получился XSS. В этом поможет документация Handlebars
-
Сейчас все пользователи нашего сайта имеют общую корзину. Сделай так, чтобы у каждого нового пользователя была своя корзина
-
* Сделай так, чтобы у каждой страницы был свой title
-
* Сделай так, чтобы переключение тёмной темы сохранялось при переходе между страницами сайта
-
* Добавь страницу истории, где показаны все заказы пользователя