Skip to content

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

Description

@chestozo

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

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

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

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

Activity

  1. chestozo commented on Feb 3, 2015

    @chestozo
    MemberAuthor

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

    • модели все есть и валидны
    • нода для вида уже отрендеренная пришла (хотя и async, но это не видно в HTML)
    • из этого всего мы делаем вывод, что вид уже отрендерился синхронно на сервере (что не является правдой) и ничего с ним не делаем
  2. edoroshenko commented on Feb 3, 2015

    @edoroshenko
    Contributor

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

  3. edoroshenko commented on Feb 3, 2015

    @edoroshenko
    Contributor

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

  4. chestozo commented on Feb 3, 2015

    @chestozo
    MemberAuthor

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

  5. edoroshenko commented on Feb 3, 2015

    @edoroshenko
    Contributor

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

  6. edoroshenko commented on Feb 3, 2015

    @edoroshenko
    Contributor

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

  7. chestozo commented on Feb 3, 2015

    @chestozo
    MemberAuthor

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

  8. edoroshenko commented on Feb 5, 2015

    @edoroshenko
    Contributor

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

  9. added a commit that references this issue on Feb 5, 2015
    16c145d
  10. chestozo commented on Feb 5, 2015

    @chestozo
    MemberAuthor

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions