Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Серверный рендеринг: async view не перерисоввывается #515

Open
1 task
chestozo opened this issue Feb 3, 2015 · 9 comments

Comments

@chestozo
Copy link
Member

chestozo commented Feb 3, 2015

Есть такой интересный кейс:
есть async вид, который зависит от какого-то набора моделей.
Когда мы рендерим на сервере страницу запрашиваются модели только для синхронных видов.

В нашем интересном кейсе получается так, что синхронные модели включают модели, нужные нашему асинхронному виду.

В итоге на сервере рендерится мода ns-view-async-content мода, а на клиенте мода ns-view-content не рендерится.

  • написать тест (вызов renderHTML, а затем reconstruct должен давать то же, что и render)
@chestozo
Copy link
Member Author

chestozo commented Feb 3, 2015

Ну т.е. получается во время reconstruct:

  • модели все есть и валидны
  • нода для вида уже отрендеренная пришла (хотя и async, но это не видно в HTML)
  • из этого всего мы делаем вывод, что вид уже отрендерился синхронно на сервере (что не является правдой) и ничего с ним не делаем

@edoroshenko
Copy link
Contributor

Есть такое. Это то, что я тогда не доделал. Нужно на клиенте находить асинхронные виды и вызывать для них update

@edoroshenko
Copy link
Contributor

Я в своих частных случаях решил это отказом от асинхронности, но это не всегда правильный путь

@chestozo
Copy link
Member Author

chestozo commented Feb 3, 2015

Я пока решил это вызовом ns.Update.render на клиенте, вместо ns.Update.reconstruct (

@edoroshenko
Copy link
Contributor

Ну т.е. у тебя страница рендерится 2 раза :)
Смысл серверного рендеринга пропадает процентов на 90

@edoroshenko
Copy link
Contributor

ну лан, не на 90. Ты всё же отдаёшь страницу ботам и показываешь что-то сразу. Просто заставляешь браузер больше работать

@chestozo
Copy link
Member Author

chestozo commented Feb 3, 2015

Ну модели зато уже на месте и первый рендеринг сразу делается.
Я понимаю, что это не круто, я просто описал, как залечить по-быстрому.
Но нужен нормальный фикс, это да.

@edoroshenko
Copy link
Contributor

Вот и мы тоже это захотели

@chestozo
Copy link
Member Author

chestozo commented Feb 5, 2015

Вроде, довольно просто пофиксить так: если у async вида есть все модели и они валидны - state должен быть сразу ok, а не loading. См #520

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants