Nikita
Тогда не понятно, какой бек будет нагружать сср если он будет на отдельном сервере
Ну так предполагается, но это на сколько я уже понимаю будет пререндер, а не ssr
Sergey
Зачем лишняя прослойка с хромом?
Anonymous
Парни а что поставить на SSR это что дело одного дня, по-моему если есть проблемы с приложением откуда данные берет и как написано там будет сложно немного
Anonymous
Я даже думаю что иногда поставить на ССР почти тоже самое что с нуля делать... Поправьте меня
Nikita
Зачем лишняя прослойка с хромом?
что бы не нагружать фронт
Nikita
Крч моя идея в том, что бы был сайт, как он сейчас есть и сайт, который уже отрендерен для поисковиков на разных серверах
Sergey
Для фронта без разницы чем у тебя html сгенерирован
Anonymous
что бы не нагружать фронт
Это глупость фронт он у клиента
Andrey
Re: прокоменьте это сообщение)))
Конечно, это изи. Это тебе не про локал сторейдж отвечать.
Anonymous
Зависит от объема приложения и от опыта с таким работать.
Ну вот если оно изначально написано херово там же каждый резолв данных писать нужно заново нормально, кстати если там будет специфические вещи типа локал стора там и логику менять надо будет
Daniil
Не особо. Если твой сср касается кусков кода браузер апи, то можно подрубить env для проверки окружения, то есть банально сср щас или нет, то выполняем N сценарий
Daniil
То есть у тебя будет какой нибудь process.env.BROWSER и с ним уже пляшешь
Nikita
Я не представляю, как без костылей и браузера мне ssr подтянет контент из апи
Daniil
Если с локал сторами, то например export const LS = { get: token => process.env.BROWSER && localStorage.getItem(token), set: (token, value) => process.env.BROWSER && localStorage.setItem(token, value), };
Daniil
Копать в сторону DefinePlugin
Anonymous
Не особо. Если твой сср касается кусков кода браузер апи, то можно подрубить env для проверки окружения, то есть банально сср щас или нет, то выполняем N сценарий
Понятно если все сделано красиво на редуксе то за один день можно поставить, а если каждый компонент своей жизнью живёт то с этим вроде будет сложно, а под редукс стейт собрать можно быстро через redux thunks
Anonymous
Хотя может чего то не догоняю никогда ещё не пробовал сср
Daniil
сср грубо говоря нужен, чтобы ты на ноде прокинул необходимые запросы (если надо), добавил теги/тайтл/дескрипшион или что тебе там нужно, проконтролировал статус ответа если уж надо (редирект с 301/302 например), далее ты уже через ноду отдаешь хтмл, например через renderToNodeStream работаешь с клиентом, то есть с реактом. Ну и вебпак приготовить для бандлов сср + можно отдельную сборку с другими настройками бабеля. Если надо, то делаешь через объект window свойства которые пойдут в редакс или что там у вас. В общем чаще всего все. Еще можно конечно через сср пускать нужные чанки для страницы с оптимизацией, например прелоад/префетч навешивать и тд. Можно еще конечно попробовать разбиение ответа на части, но не в данном случае.
Ну если тебе нужны данные которые не касаются редакса, то можно через тот же контекст их слать или цепочкой пропсов или вообще через window доставать
Andrey
Если с локал сторами, то например export const LS = { get: token => process.env.BROWSER && localStorage.getItem(token), set: (token, value) => process.env.BROWSER && localStorage.setItem(token, value), };
Вот такой вопрос, а что можно взять из локал сторейджа, что помешает сср? Ну возьмешь ты профиль юзера/личные настройки/цвет темы после сср и перестроишь страницу если нужно.
Daniil
потому что в итоге с хтмл летит window в любом случае если идет работа с данными на сср
Daniil
это браузер апи
Daniil
у тебя тупо будет ошибка и все упадет в худшем случае
Daniil
а ты через тот же render to node stream работаешь со своим кодом на клиенте
Andrey
Локалстор невозможен в рамках ноды
А что ты можешь из него взять, что помешает постройке страницы?
Daniil
Он просто тупо встретиться в твоем коде и будет как udnefined
Daniil
и вылетит ошибка
Daniil
я к этому веду
Daniil
и у тебя сср упадет
Andrey
Ну дак проверяй андефайнед он или не. Или доп методы добавь для сср.
Anonymous
Он просто тупо встретиться в твоем коде и будет как udnefined
Любой код расчитанный на апи бразуера упадет
Anonymous
Ну дак проверяй андефайнед он или не. Или доп методы добавь для сср.
Это надо весь проект обойти подумать как грамотно решить
Daniil
Я вроде этот кейс выше уже рассказал же 🙂
Anonymous
Яркий и тупой пример сделать что то от размера экрана
Anonymous
Я вроде этот кейс выше уже рассказал же 🙂
Я к тому что это не просто взять и сделать это нужно весь проект обойти и найти такие места, если проект большой это долго
Anonymous
Понятно что с редуксом просто ты рендеришь в строку и отдаешь чуваку хтмл и стейт... Если изначально делать все грамотно то оно встанет очень легко, но мы же знаем как обычно пишут проекты))))
Anonymous
Это правильный код? Я из старого массива удаляю нужны элемент и старый массив копирую и возвращаю новый массив на стейт
Anonymous
Сори за снимок, на компе телеги нету, ну и из-за русский
arts
Юзай filter
Anonymous
Ок, поменяю
アレクサンダー・バキマトフ
Можно проще: this.setState({todoData: this.state.todoData.filter(e => e.id !== id)})
у него тогда массив будет с одним элементом который он удалить хочет) !== надо)
Anonymous
Нет. Ты всё равно мутируешь старый массив
Может скопировать сразу массив, а потом удалить элемент из нового массива и вернуть его в стейт
アレクサンダー・バキマトフ
Можно проще: this.setState({todoData: this.state.todoData.filter(e => e.id !== id)})
вот же решение, зачем ты переусложняешь?
arts
Может скопировать сразу массив, а потом удалить элемент из нового массива и вернуть его в стейт
Так уже лучше, но для таких целей как раз и придумали filter, юзай его
Таймураз
Daniil
Ну так можно же exact ставить
Сергей
Может потому, что стоит и там и там?
Daniil
Только на photos нужен по-идее. Если нет, то лучше в песочницу
Arthur
Так сделай один путь и уже от :route будешь решать какой компонент показывать
Hesus
Всем привет, SSR актуальная вещь в реакте на сегодня?
Alexander
Уровень злости зашкаливает)
Hesus
SEO + скорость загрузки
Hesus
Забей, просто встал вопрос о применении
Daniil
Не набрасывай, хочет - пусть не рассказывает
Sergey
Photos подними выше
Vladimir
Так можно ж для id написать в роут регулярное выражение что может быть только число потом photos поставить выше и завернуть оба в Switch
Vladimir
Про Switch или regexp?
Vladimir
Давно не юзал, вроде так пишется ..../id(\d+)
Vladimir
В общем в доке есть
N
Доброго времени, господа помогите вытащить json внутри переменной window.runParams = отсюда: https://regex101.com/r/DldQSp/1/ мае выражения не корректный: