Тут все споры от того, что люди в разных мирах крутятся.
На большом проекте, там где более 1
app-сервера, никто не использует выкатку через git, или заглушку с простоем сайта. Там есть несколько окружений (обычно это dev, staging, prod). Dev - локальная среда разработки, staging - тестовый сервер, prod - боевой сервер. код и все зависимости должны быть одинаковые. Поэтому CI/CD, doker, k8s и вот это вот всё..
С другой стороны - ребята, которые делают не сильно нагруженные сайты. Где не критичен простой. Где важно быстрее фичу доставить. О каком деплое тут может идти речь? В крупных компаниях на систему CI/CD угрохано несколько человеко-лет разработки.
Отсюда и всё непонимание. Почему деплой - это не руками набрал git pull, а запуск по кнопке в bamboo, teamcity или gitlab
Потому что всё что я вижу - сплошные обвинения, без уточнения деталей.
Давайте так, вы нам пример демонстрирующий ошибку или некорректное поведение, мы вам - ответ, что там не так или признание в том что реакт ужасно спроектирован и не позволяет решить вашу задачу.
PS Приводить в качестве примера репозитарий в несколько тысяч строк, не стоит.
copal: Сайт не пересоздаётся каждый раз, почитайте про дифф алгоритмы виртуального дома https://habrahabr.ru/post/217295/ Обновляется только минимальная часть, там где есть изменения в state или в props
copal: Мне кажется что вы не совсем разобрались в идеалогии реакта.
Реакт вызывает рендер на каждый чих, и это правильно, страница должна отображаться со свежими данными.
Но данные в компоненте вы можете должны получать из сервера не при рендере, а при инициализации componentWillMount(), или при клике на кнопке. Или при каком-то другом событии.
К тому же, вы можете отменить событие рендера, для этого есть методы вызываемые перед апдейтом.
Ninja Mate: схема немного меняется, добавляется механизм получения данных:
1. Получаем данные с сервера
2. Сортируем полученные данные, сохраняем их в state родительского компонента
3. Вызывается рендер в родительском компоненте
4. В методе рендера вызывайте метод получения списка дочерних компонентов
5. В этом методе формируются дочерние компоненты (которые формируются из отсортированных данных) и дочерние компоненты встраиваются в родительский компонент.
6. Всё готово
На большом проекте, там где более 1
app-сервера, никто не использует выкатку через git, или заглушку с простоем сайта. Там есть несколько окружений (обычно это dev, staging, prod). Dev - локальная среда разработки, staging - тестовый сервер, prod - боевой сервер. код и все зависимости должны быть одинаковые. Поэтому CI/CD, doker, k8s и вот это вот всё..
С другой стороны - ребята, которые делают не сильно нагруженные сайты. Где не критичен простой. Где важно быстрее фичу доставить. О каком деплое тут может идти речь? В крупных компаниях на систему CI/CD угрохано несколько человеко-лет разработки.
Отсюда и всё непонимание. Почему деплой - это не руками набрал git pull, а запуск по кнопке в bamboo, teamcity или gitlab