Написал простое приложение ssr. К моменту подключения redux все было красиво. Но, помимо отрендеренной страницы теперь нужно передавать еще и стор. Redux предлагает передачу через глобальную переменную. <script>window.STORE = {}</script> В этом случаи весь контент на странице будет дублироваться (html + STORE) мне это не нравится. Хотелось бы парсить данные с react. Redux и сам это делает. Если данные на сервере и клиенте не совпадают он выбрасывает ошибку. Но вот ничего похожего на автогенерацию стора я так и не нашел. Может есть другие идеи? Или только дублировать?
Понял Ну давайте тогда обсудим необходимость стора. Как много на большом проекте я потеряю не используя redux? Насколько код станет страшным? redux connect thunk еще и асинхронность добавляют которую придется делать самому. Насколько я понял в react нет простого пути нужно делать свой декоратор. Буквально пару дней назад все писали о будем spa ssr а сейчас полная тишина никто даже обсудить не хочет)
не, ты же сам сказал, что фреймворки тебе нафиг не сдались и оно за 5 минут собирается и так. store в любом случае должен передаваться, иначе клиентская часть не узнает что там нарендерил сервер. --- Добавлено --- не много. Ты просто реализуешь свой аналог стора, что бы хранить данные и состояние приложения. Потому что иначе тебя ждет ад неподдающийся отладке.
Так я и собрал за 5 минут. Мне не нравится что нужно передавать инициализацию стора дублировать данные. Вот в этом и беда. Если писать без стора придется передавать данные от родителя в ребенку и обратно. Пока еще сложно принять этот факт вот и думаю оно того стоит? --- Добавлено --- Тот же вк без стора на реакте. Там нету дублирубщейся информации
Погодь, куда и кого ты собрался передавать? store нужно передать один раз вместе с отрендеренной на сервере страницей. Дальше он выступает хранилищем данных для всего приложения. Всё. --- Добавлено --- мы говорим об spa или использовании react в качестве шаблонизатора на клиенте? и вк - такое себе, у них там легаси с древних времен, а не пример хорошего кода. Как и у остальных крупняков.
Я это понимаю но все равно не хочу. Чистый реакт рендерит чистую страницу а дальше сам все разбирает. Или нет. Запутался я) Я вот смотрел youtube они совсем не заморачиваются там все js) --- Добавлено --- Хотя чего нет. Да. Первый раз он все пропускает а при следующем экшене уже сам делает запрос. Ну и соответственно манипулирует сразу всем.
Он умеет индексировать только если передаются все данные. Запроса к апи он не дожидается. window.initStore+file.js теоретически должен осилить.
Вот как вы считаете что будет в консоле и что будет отрендеренно) Код (Javascript): import express from 'express' import React from 'react' import { renderToString } from 'react-dom/server' import axios from 'axios' class Test extends React.Component { constructor(props) { super(props) this.state = {time:'INIT'} } async componentWillMount() { this.setState({time:'CWM'}) const res = await axios('http://localhost:3000/time'); console.log(res.data) this.setState({time:res.data}) } render() { return ( <div>React {this.state.time}</div> ) } } const app = express() app.get('/', (req, res) => res.send(renderToString(<Test/>))) app.get('/time', (req, res) => res.send((new Date()).getSeconds().toString())) app.listen(3000, () => console.log('http://localhost:3000'))
моя первая вакаха на next https://php.ru/forum/threads/javascript-razrabotchik-next-nuxt-razovo-na-sajt-udaljonno.70139/ дальше - больше.
А вот мне кажется что пока еще рано. Если начинать делать сейчас в будущем все равно придется корректировать. Хотя vue я еще толком и не рассматривал.
вот кстати пример сайта на vue без nuxt но суть та же https://github.com/vuejs/vue-hackernews-2.0/ --- Добавлено --- показываю что бы было представления как это будет работ на реальном проекте с api
Ну а если так. Роутинг делаем на экспрессе. Никакого spa. Но внутри самой странички все реактивно? В итоге и красиво и функционально и от апи отдельно