你如何使用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://github.com/erikras/react-redux-universal-hot-example :使用Redux ,我最喜欢的应用程序状态pipe理框架
- https://github.com/webpack/react-starter :使用Flux,并有一个非常复杂的webpack设置。
尝试访问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 。