【问题标题】:Displaying a server side rendered reactJS component within a PHP application在 PHP 应用程序中显示服务器端渲染的 reactJS 组件
【发布时间】:2014-04-28 09:12:30
【问题描述】:

我之前在另一个项目中使用过 reactJS。 在构建上述项目时,我注意到一个失败,即与 JS 渲染组件相关的 SEO 优势的损失。

我正在重建一个旧项目,我想用 ReactJS 替换一些 Javascript。

例如,多步骤表单 - 我想将其替换为根据需要显示正确阶段的有状态组件。

不过,我希望通过第一步可抓取来维护页面的 SEO 方面。

为了实现这一点,我的研究表明我应该使用 React 的 React.renderComponentToString

研究了这个问题后,我的想法是我应该使用 node.js 渲染组件服务器端,然后在浏览器中提供它们。然后按照说重新添加该组件以添加客户端功能。我的第一个问题是这是否是一种合适的方法?有没有我忽略的更简单的方法?

Pete Hunt 在这里 (https://groups.google.com/forum/#!msg/reactjs/eUespJPdyas/hmJywyo9ZSwJ) 提到 Instagram 使用/使用 Django 并且设置与我想象的相似。

我的应用程序是使用 phalcon 用 php 编写的。我的问题基本上与此声明有关:

Node 然后将返回组成组件的 HTML。姜戈 获取该 HTML 并通过普通 Django 将其插入 DOM 模板。

如何在 PHP 中执行此操作?我不希望这个组件在后台渲染并在请求时使用,而是在 PHP 需要时通过传递的参数渲染。

我发现了这个问题 (Sending messages from PHP to Node.js),这让我想到了一种方法是简单地使用 CURL 来查询我的节点实例正在侦听的端口以获取然后输出的 html。

我担心的是,我所有的 CURL 经验都表明它非常慢。我不希望我的页面加载时间大幅减少只是为了获得一些 SEO 好处。

有人可以就上述问题/我的方向提出建议吗?

非常感谢

【问题讨论】:

    标签: php node.js curl phalcon reactjs


    【解决方案1】:

    Stoyan Stefanov 创建了一个库,用于从 PHP 代码调用 V8 JS 库来执行此类操作;可以在这里找到:

    https://github.com/reactjs/react-php-v8js

    您可以在这两篇文章中了解他如何设置 React 服务器渲染:

    http://www.phpied.com/server-side-react-with-php/
    http://www.phpied.com/server-side-react-with-php-part-2/

    渲染不会是即时的,但应该相当快。如果您遇到性能问题并且缓存没有帮助,您可以考虑使用 Google 的 AJAX 抓取功能,以便仅对 Googlebot 使用服务器渲染,而不是正常请求:

    https://developers.google.com/webmasters/ajax-crawling/docs/getting-started

    请注意,浏览器也会利用服务器渲染的标记,因此即使初始请求较慢,渲染也可能会更快。

    【讨论】:

    • 谢谢本。非常翔实的答案 - 不知道我在研究期间是如何错过这个的。我已将此标记为正确.. 因为它是:P 但我仍然会对人们可能拥有的任何其他潜在解决方案感兴趣。例如,我假设我对 curl 和 speed 的看法是正确的。谢谢!
    猜你喜欢
    • 2015-10-22
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 2015-03-01
    • 2018-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多