Сайт создан с помощью Create React App.
Для начала работы с проектом надо установить зависимость введя в консоль npm install или короткую версию npm i.
В каталоге проекта вы можете запустить:
Запускает приложение в режиме разработки (живая dev-сборка).
Откройте http://localhost:3000/site-gen#/, чтобы просмотреть его в браузере.
Страница перезагрузится, если вы внесете правки. \
Запускает тестов в интерактивном режиме.
Подробнее можно прочитать здесь: running tests.
Собирает проeкт в папку build.
Он правильно связывает React в производственном режиме и оптимизирует сборку для достижения максимальной производительности.
Сборка минифицирована, а имена файлов включают хеши.
После этого Ваше приложение готово к развертыванию на сервере!
Подробнее можно прочитать здесь: deployment.
Не советую использовать.
Если вы не удовлетворены выбором инструмента сборки и конфигурации, вы можете eject в любое время. Эта команда удалит единственную зависимость сборки из вашего проекта.
Используется в скрипте ниже.
Используется для публикации проекта в ветке gh-pages на GitHub.
Подробнее можно прочитать здесь: gh-pages.
Внешний вид изменяется при изменении роутингов:
-
https://na-613c.github.io/web-gen/#/ - Главная.
Внешний вид страницы зависит от того, зарегестирован пользователь или нет. Так же при появлении новых записей в удалённой базе данных изменяется таблица со скписком всех сайтов. -
https://na-613c.github.io/web-gen/#/login - Регистрация.
Страница которая предотвращает посещение не зарегистрированных пользователей конструктора. -
https://na-613c.github.io/web-gen/#/constructor - Конструктор.
Внешний вид страницы напрямую зависит от действий пользователя. Не зарегестрированный пользователь не может попасть на неё . При добавлении элементов появляются поля с вводом данных. Отображается предпросмотр сайта в реальном времени. Так же есть защита от пустых полей и предупреждении о совпадении URL при вводе (в реальном времени: например, если в момент создания данный URL не был занят, но в процессе создания сайта кто-то занял - вы увидите об этом сообщение). При наведении на знак вопроса около поля ввода URL всплывает подсказка. Так же при не прохождении валидации кнопка создать будет отключена. Так же есть предупреждение, если пользователь заходит с устройства со "слишком" маленьким экраном. (Рекомендуется использовать альбомную ориентацию). -
Регистрация.
Внешний вид зависит от того, зарегестирован пользователь или нет. Если Вы не прошли регистрацию, там находится кнопка войти. Если пользователь вошёл - там отображается аватарка и кнопка для выхода. Если пользователь использует экран более 800 пикселей - отображается его имя. Если пользователь нажимает на кнопку выйти - появляется собщение с предупреждением.
Так же регистрация нужна для удаления сайтов, которые вы уже создали. Есть предупреждении об удалении. Если сайт не принадлежит вам или вы не авторезированы, то кнопка будет отключена. -
Просмотр сайтов.
В таблице на главной странице есть список сайтов, которые можно посетить. Для возвращения назад придётся использовать кнопку браузера "назад".
- Для повышения производительности активно использовался хук React.memo и PureComponent (можно найти в компоненте ElementForm).
- React.lazy использовался для ленивой загрузки страниц сохраненных сайтов. Можно увидеть в App компоненте.
- На главной странице можно отобразить до 5, 10, 20, 50 и 100 одинаковых элементов (ссылок на сайты). Для этого надо выбрать подходящее количество в выпадающем списке ( с компьютера ).
- Анимацию при появлении и удалении элементов можно увидеть на странице конструктора. Cделанна при помощи Motion Design. Tак же есть css анимации загрузки и стрелки около кнопки создания сайта.
- Кнопки вперед и назад работают корректно. Отображение сильно зависит от изменений URL. Использовался HashRouter вместо BrowserRouter для корректной работы на github pages.
- При нажатии кнопки назад во время создания сайта в конструкторе при заполненных полностью или частично полях появится предпреждение о потере данных.
- Данные для хранения всех сгенерированныых сайтов хранятся в Firebase.
- Для работы с данными и объёмной логикой использовалась библиотека MobX. MobX - это библиотека, которая делает управление состоянием простым и масштабируемым за счет прозрачного применения функционального реактивного программирования (TFRP).
- Есть dev-сборка при помощи скрипта
yarn start|npm start. - Работающий проект размещен по ссылке https://na-613c.github.io/web-gen/#/. При необходимости можно собрать prod-сборку для запуска на своём сервере при помощи команды
yarn build|npm run build.
Для запуска тестов надо ввести в консоль скрипт yarn test | npm run test.
Были написанны следующие тесты:
-
Связанные с отрисовкой компонентов:
-
Связанные с состоянием:
-
TmpPageService.test.js - основная логика работы с полями ввода данных.
-
-
Связанные с утилитами: