你如何使用React.jssearch引擎优化?

关于React.js的文章喜欢指出,React.js对search引擎优化非常有用。 不幸的是,我从来没有读过,你是如何做到的。 你只_escaped_fragment_像https://developers.google.com/webmasters/ajax-crawling/docs/getting-started中那样实现_escaped_fragment_ ,让React在服务器上呈现页面,当url包含_escaped_fragment_ ,或者还有更多?

能够不依赖_escaped_fragment_会很好,因为可能不是所有可能的抓取站点(例如在共享function中)实现_escaped_fragment_

我敢肯定,你所看到的任何促进React作为SEO的好处,与能够在服务器上呈现请求的页面之前,发送给客户端。 因此,就search引擎而言,它将像其他任何静态页面一样被编入索引。

通过ReactDOMServer.renderToString使服务器渲染成为可能。 访问者将收到已经呈现的标记页面,React应用程序在下载并运行后将检测到该页面。 当ReactDOM.render时,不用replace内容,而只是添加事件绑定。 对于剩下的访问,React应用程序将接pipe并在客户端上呈现更多页面。

如果您有兴趣了解更多信息,build议您search“Universal JavaScript”或“Universal React”(以前称为“同构反应”),因为这正在成为使用单一代码库进行呈现的JavaScript应用程序在服务器和客户端上。

正如其他响应者所说,你正在寻找的是一个同构的方法。 这允许页面来自服务器,呈现将由search引擎parsing的内容。 正如另一位评论者所提到的,这可能会让你看起来像是用node.js作为你的服务器端语言。 虽然确实需要在服务器上运行javascript以使其工作,但您不必在节点中执行所有操作。 例如,本文讨论如何使用Scala实现一个同构页面并作出反应:

https://thebhwgroup.com/blog/isomorphic-web-design-react-scala

该文章还概述了这种同构方法的UX和SEO优势。

两个很好的示例实现:

尝试访问https://react-redux.herokuapp.com/使用JavaScript打开和closures,并在浏览器开发工具,看看networking中看到的差异;…

也可以通过ReactDOMServer.renderToStaticMarkup

类似于renderToString ,除了这不会创build额外的DOM属性,例如data-react-id ,React在内部使用。 如果你想使用React作为一个简单的静态页面生成器,这很有用,因为剥离额外的属性可以节省大量的字节。

由于我设法让我的客户端React应用程序与googlebot一起工作,绝对没有SSR,所以不得不不同意这里的很多答案。

看看这里的答案 。 我只是设法最近工作,但我可以确认目前没有问题,谷歌可以实际执行API调用和索引返回的内容。

如果您关心您的网站在Google上的排名,则无需执行任何操作,因为Google的抓取工具可以很好地处理JavaScript! 您可以通过searchsite:your-site-url检查您网站的search引擎优化结果site:your-site-url

如果你也关心你的网站的排名,如百度 ,你的服务器端由 PHP实现,也许你需要这个: react-php-v8js 。