javascript - React 服务器组件在 SEO 上的性能

标签 javascript reactjs next.js server-side-rendering react-server-components

所以这是一个相当新的话题,React Server Components 最近发布了,和 SSR/Next.js 相比,它对 SEO 有什么影响?
由于组件是在请求时动态呈现在服务器中的,它并不像 Next.js 这样的 SSR 那样静态,如果我使用它,搜索引擎会无法索引这些组件吗?
可以找到一个演示 here
我们可以在 api.server.js 中看到,

async function renderReactTree(res, props) {
  await waitForWebpack();
  const manifest = readFileSync(
    path.resolve(__dirname, '../build/react-client-manifest.json'),
    'utf8'
  );
  const moduleMap = JSON.parse(manifest);
  pipeToNodeWritable(React.createElement(ReactApp, props), res, moduleMap);
}

function sendResponse(req, res, redirectToId) {
  const location = JSON.parse(req.query.location);
  if (redirectToId) {
    location.selectedId = redirectToId;
  }
  res.set('X-Location', JSON.stringify(location));
  renderReactTree(res, {
    selectedId: location.selectedId,
    isEditing: location.isEditing,
    searchText: location.searchText,
  });
}
我知道这有助于减少客户端设备的工作量,因为组件在服务器上呈现并发送到客户端,并且可以使用存储在服务器中的 secret 来呈现组件,因为我们可以将其作为 Prop 传递而不是我们将 secret 发送给客户。
但如果 SEO 很重要,SSR 是否优于 React 服务器组件?

最佳答案

服务器组件是 互补渲染成 HTML,而不是替代方案。 计划是两者兼得。
服务器组件未发布。本着分享我们研究的精神,发布的是早期技术预览。此预览不包括 HTML 渲染器。 api.server.js您提到的演示中的文件包含对此的评论:

    const html = readFileSync(
      path.resolve(__dirname, '../build/index.html'),
      'utf8'
    );
    // Note: this is sending an empty HTML shell, like a client-side-only app.
    // However, the intended solution (which isn't built out yet) is to read
    // from the Server endpoint and turn its response into an HTML stream.
    res.send(html);
到服务器组件正式发布时,将有一个流式 HTML 渲染器用于第一次渲染。
它还没有建成。

关于javascript - React 服务器组件在 SEO 上的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65488167/

相关文章:

javascript - 纯 JS : Get percentage of the horizontal position clicked within a div?

javascript - Angular Material - $mdDialog 自定义模板 - ng-click 指令中的函数?

javascript - create-react-app Uncaught (in promise) 语法错误 : Unexpected token < in JSON at position 0

javascript - WordPress 在每个帖子上运行 javascript 代码

javascript - 将 JavaScript 检测与 MVC4 显示模式集成的最佳方式是什么?

javascript - 如何使用ReactJS中的条件映射功能?

javascript - 与 React 的默认导入混淆

docker - Docker从文件撰写构建时间参数

react-native - Nextjs 的样式组件未传递主题

reactjs - 如何在 Next.js react 应用程序上添加 Facebook Pixel?