Как стать автором
Обновить

Комментарии 4

А чем пользуется facebook? Как то странно, что react достаточно давно в строю, а библиотек от производителя нет

Добрый день, ставил цель если кто-то по каким-то причинам стал сам писать с нуля SSR для себя, а так можно попытаться пользоваться любым фреймворком, например NextJS и похожее.
По поводу фейсбука, вероятно они используют GraphQL как источник получения данных и там есть целая платформа в виде Apollo
Apollo имеет свой механизм извлечения данных и заодно облеченный механизм рендеринга дерева для извлечения метатегов (но тут надо обратить внимание, что рендерит он только первый уровень (слой) дерева и никие другие вложенные компоненты не будут включены). Вот как раз код для этого случая приведен тут:
// ....
import { getDataFromTree } from 'react-apollo';

const helmetContext = {};

const app = (
  <HelmetProvider context={helmetContext}>
    <App/>
  </HelmetProvider>
);

await getDataFromTree(app);

const [header, footer] = template({
  helmet: helmetContext.helmet,
});

res.status(200);
res.write(header);
renderToNodeStream(app)
  .pipe(
    through(
      function write(data) {
        this.queue(data);
      },
      function end() {
        this.queue(footer);
        this.queue(null);
      }
    )
  )
  .pipe(res);

Т.е. внутри этого метода getDataFromTree происходит и частичный рендеринг дерева ну и плюс заодно можно поизвлекать теги их Helmet.
Спасибо

Только Facebook скорее всего использует Relay, а не Apollo.

Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации