Comments 4
А чем пользуется facebook? Как то странно, что react достаточно давно в строю, а библиотек от производителя нет
0
Добрый день, ставил цель если кто-то по каким-то причинам стал сам писать с нуля SSR для себя, а так можно попытаться пользоваться любым фреймворком, например NextJS и похожее.
По поводу фейсбука, вероятно они используют GraphQL как источник получения данных и там есть целая платформа в виде Apollo
Apollo имеет свой механизм извлечения данных и заодно облеченный механизм рендеринга дерева для извлечения метатегов (но тут надо обратить внимание, что рендерит он только первый уровень (слой) дерева и никие другие вложенные компоненты не будут включены). Вот как раз код для этого случая приведен тут:
Т.е. внутри этого метода getDataFromTree происходит и частичный рендеринг дерева ну и плюс заодно можно поизвлекать теги их Helmet.
По поводу фейсбука, вероятно они используют 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.
0
Спасибо
0
Только Facebook скорее всего использует Relay, а не Apollo.
+1
Sign up to leave a comment.
ReactJS, Server Side rendering и некоторые тонкости обработки метатегов страницы