alena-ilina / e-basket

Basket for E-shop
2 stars 0 forks source link

e-basket

Basket for E-shop

Команды, используемые в работе:

Необходимо установить Node.js версии >= 4.x.x

Чтобы просто собрать проект, необходимо поставить npm-зависимости:

npm install --production

Если требуется запуск тестов и линтинг, то необходимо выполнить просто npm install.

Используемые технологии

Было бы не плохо заменить Handlebars и Jquery на React (или ему подобную библиотеку), чтобы не тянуть две эти большие библиотеки. Плюс мы бы получили возможность ререндерить только изменившиеся части приложения. Сейчас же компоненты ререндерятся полностью, если есть изменения в сторе. Сейчас это работает быстро, но я бы перешла на React в последствии. В данном тестовом задании было больше желание попробовать Redux без React, изучить его более глубоко. Для ререндеринга пробовала работать с пакетом morphdom, но как-то не получилось. Данный пакет предоставляет возможность применять только diff между текущим DOM и, например, с его новой версией, которая предается в morphdom строкой. Но, как я уже писала ранее, с ним не удалось разобраться. При использовании React можно было бы лучше разбить приложение на отдельные компоненты. В следующей версии корзины именно это и сделаю)

Текущее приложение можно интегрировать в любой сайт — он никак не помешает остальным скриптам на сайте.

Как работает приложение

Рассмотрим как работает приложение на примере увеличения количества товара. При нажатии на кнопку увеличения товаров происходит обработка события клик. В ней вызывается action для этого случая. В action передаем id товара. По этому id в редьюсере находим товар в начальном state и возвращаем новый state с измененным товаром. При изменении store вызовется функция, которая отрендерит заново всю таблицу. Затем вызовется action, который пересчитает цену. Затем вызовется action, который отправит данные о товаре на бэкэнд и вернет общую цену со скидкой или без.

Файловая структура исходных файлов проекта

Примечания