题
我正在使用一个简单的控制器来更改我所示的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>
);
}
.
在视图中,我触发回调:
var Home = React.createClass({
render: function () {
this.props.onTitleUpdate("Home", "");
...
.
我的问题是,这个回调是在一个会受益SEO的点处发生的,即页面标题和规范改变,它们是以触发Google Bot意识到标题和规范的改变的方式更新的吗?
我还在考虑使用 cortex
解决方案
谷歌通常会在包裹下执行JavaScript时保留详细信息;从2010年考虑此报价:
在大中,我只是假设谷歌(当然某些其他搜索引擎)不会执行我的javascript,这意味着我对页面的任何更改都不会被拾取。当然,你可以简单地尝试它,而看谷歌所看到的东西知道它是否工作。 在任何一种情况下,React都能能够呈现在服务器端和透明地挂钩客户端上的事件处理程序,让您能够轻松处理。 (您可能需要重新捕获一些代码以使其在两个上下文中运行。)“暂时,我们在JavaScript中扫描,我们正在寻找链接。谷歌对JavaScript的更聪明,可以执行一些JavaScript。我不会说我们执行所有JavaScript,所以有一些条件我们不执行JavaScript。当然还有一些常见的,众所周知的JavaScript,如Google Analytics,您甚至不会想要执行,因为您不想尝试从GoogleBot生成幻像访问Google Analytics “。
不隶属于 StackOverflow