Internationalization 搜索引擎优化友好的国际化聚合物.dart

Internationalization 搜索引擎优化友好的国际化聚合物.dart,internationalization,seo,dart,single-page-application,dart-polymer,Internationalization,Seo,Dart,Single Page Application,Dart Polymer,我在聚合元素中显示国际化字符串,如下所示: {{myContent}} 。。。并具有以下dart代码: @可观察字符串myContent; //... void onUpdateLocale(_locale){ myContent=getMyContent(); } //... getMyContent()=>Intl.message('All my content…',name:'myContent', 描述:“这是我的内容”, args:[], 示例:{'None':0}); 但是,;

我在聚合元素中显示国际化字符串,如下所示:


{{myContent}}
。。。并具有以下dart代码:

@可观察字符串myContent;
//...
void onUpdateLocale(_locale){
myContent=getMyContent();
}
//...
getMyContent()=>Intl.message('All my content…',name:'myContent',
描述:“这是我的内容”,
args:[],
示例:{'None':0});

但是,;当谷歌抓取应用程序时,它只提取“{{myContent}}”,而不是它的插值,即实际的国际化内容。有没有办法解决这个问题,制作一个国际化的Polymer.dart应用程序,它也对搜索引擎优化很友好?

因此,除了我刚才查看的关于数据绑定的文档之外,我对Polymer了解不多。它似乎与Google的AngularJS非常相似,因为它以声明的方式使用JavaScript将数据呈现到HTML文档中。在这种情况下,浏览器基本上仍然将对{{something}}的底层调用视为一个原始字符串。然后,JS库将这些数据转换为屏幕上的文本


这种情况下,你可能会考虑像SEO这样的角度开发人员。以下是关于该主题的权威资源:

谷歌有一个规范,允许您在所有必要的Javascript(或Dart)运行到搜索引擎后提供页面HTML的快照:

其基本思想是在服务器端呈现页面,然后遵循一组URL约定,让您以一种不会与隐藏混淆的方式为搜索引擎提供预生成的HTML

谷歌、必应、Yandex和一些社交机器人都支持这个规范


您可以自己实现此规范,也可以使用为您实现此规范的服务(我为其中之一工作:)此解决方案通常在web服务器级别插入,因此您不需要对应用程序进行任何更改。

这并不清楚。尽管最近谷歌宣布他们正在评估Javascript来为页面编制索引,但我还没有看到任何关于这与服务器呈现页面方法相比的深入评估

此外还有像必应这样的非谷歌搜索引擎的问题

目前的Polymer并不真正做服务器端渲染,据我所知,该团队没有计划在不久的将来提供

如果你的项目/业务依赖SEO,我不会冒险使用聚合物

您有两个选项来解决此问题:

  • 每当爬虫请求页面时,使用phantom.js在服务器端呈现页面

  • 使用第三方服务,如ajaxsnapshots

  • 忘记聚合物,使用react.js组件框架。React有一种在服务器端呈现虚拟DOM的方法。如果您使用的是node.js框架,这将无缝工作。JVM框架和Java6+附带的Javascript引擎(Java8.Google“nashhorn”中有了很大的改进)都应该可以做到这一点


  • 聚合物仍然是前阿尔法,所以我建议提交一份错误报告。是的,我知道这个解决方案,但现在已经过时了。更现代的方法包括airbnb的Rendr。我希望Dart开发人员能提供这样的API。我可能会因为Rendr而放弃Dart,转而使用主干+节点+Rendr架构。我喜欢一个古老的方法是多么“过时”。也许你应该走流星路线,因为他们现在有了“spiderable”包:,它去掉了配置步骤。但说真的…选择一个框架只是为了搜索引擎优化?它不仅是一年的历史;这个行业并没有发展得那么快:)我相信它可以追溯到2009年。查看此链接:有关“谷歌方法”的详细信息