SEO 如何在 ReactJS 页面变化中发挥作用

Ser*_*gan 5 seo googlebot reactjs

我正在使用一个简单的控制器来更改我显示的 ReactJS 视图,如下所示:

    getInitialState: function() {
        return {view: null};
    },
    setViewFromHash: function () {
        var that = this;
        var address = window.location.hash;
        if(address != "")
        {
            address = address.substring(1);
            require(["jsx!" + address], function (View) {
                that.setState({view: View});
            });
        }
        else
        {
            require(["jsx!Home"], function (View) {
                that.setState({view: View});
            });            
        }
    },
    componentWillMount: function () {
        var that = this;
        window.onhashchange = function () {
            that.setViewFromHash();
        };
        this.setViewFromHash();
    },
    onTitleUpdate: function(title, canonical) {
        document.title = title + titleDefault;
        $('link[rel=canonical]').prop('href', canonicalDefault + canonical);
    },
    render: function () {
        var viewToLoad = null;
        if (this.state.view === null) {
            viewToLoad = "Loading...";
        } else {
            viewToLoad = this.state.view({ onTitleUpdate: this.onTitleUpdate });
        }

        return (
            <article>
                {viewToLoad}
            </article>
        );
    }
Run Code Online (Sandbox Code Playgroud)

在视图中,我触发了一个回调:

var Home = React.createClass({
    render: function () {
        this.props.onTitleUpdate("Home", "");
...
Run Code Online (Sandbox Code Playgroud)

我的问题是,此回调是否发生在有利于 SEO 的点上,即页面标题和规范更改,它们是否以触发 Google 机器人意识到标题和规范已更改的方式更新?

我也在考虑使用Cortex来管理我的数据,那会更好吗?更差?没有什么不同?至于搜索引擎优化/谷歌机器人对其正在查看的“页面”的看法?

Mic*_*ley 4

Google 通常会保密有关何时执行 JavaScript 的详细信息;考虑一下 2010 年的这句话:

“有一段时间,我们在 JavaScript 中进行扫描,并寻找链接。Google 在 JavaScript 方面变得更加聪明,并且可以执行一些 JavaScript。我不会说我们执行所有 JavaScript,所以在某些情况下我们不执行不执行 JavaScript。当然,有一些常见的、众所周知的 JavaScript 东西,例如 Google Analytics,您甚至不想执行它们,因为您不想尝试生成从 Googlebot 到您的 Google Analytics 的虚拟访问”。

总的来说,我会简单地假设 Google(当然还有其他一些搜索引擎)不会执行我的 JavaScript,这意味着我对页面所做的任何更改都不会被采纳。当然,你可以简单地尝试一下,看看谷歌看到了什么,就知道它是否有效。

无论哪种情况,React 都能够在服务器端渲染并透明地将其事件处理程序连接到客户端,使您能够轻松处理这两种情况。(您可能需要重新调整一些代码以使其在两种上下文中运行。)