javascript - Handlebars.js 和 SEO

标签 javascript templates seo handlebars.js

我已经阅读了大量关于 javascript 模板和搜索引擎优化的讨论。不过,我还没有找到令人满意的问题答案(记录不完整或过时)。

目前我正在研究 handlebars.js 作为客户端模板解决方案,因为我喜欢创建辅助函数的可能性。但是搜索引擎的索引呢?机器人是否索引生成的内容(如预期的那样)或仅索引具有丑陋的 javascript 伪变量的源?我知道关于这个问题有很多线索,但我觉得没有人确切知道答案。

如果像 Google 这样的引擎不能正确地为这些模板编制索引,为什么还要在公共(public)网站上使用它呢?

此上下文中的另一个问题:是否可以在服务器端呈现 Handlebar.js 模板,然后将它们呈现给客户端?显然是为了避免所有这些 SEO 讨论。

最佳答案

对于 dom crunching 客户端,大多数网络机器人(即 Google 和其他)不会动态解释 js 并解析新呈现的内容以进行索引。相反,Google(现在是 Bing)支持“Google Ajax 爬行方案”(https://developers.google.com/webmasters/ajax-crawling/docs/getting-started)——它基本上说明如果您希望 js 呈现的 dom 内容被索引(即呈现 ajax 调用结果),您必须能够:

  1. 使用 hashbangs #!(即 http://www.mysite.com/#!my-state)通过 url 触发异步 js 渲染,以及
  2. 能够根据要求在 js 修改后提供您网站的预渲染 dom 快照。

如果使用客户端 MVC 框架,如 Backbone.js 或 Spine - 如果您希望将您的 Web 应用程序编入索引,则需要提供此服务。

通常这意味着您拦截网络机器人发出的请求(在上面的链接中解释),并使用 headless 浏览器(即 QT + capybara-webkitHtmlUnit 等)抓取您的服务器端,然后将生成的 dom 传递回请求机器人。

我已经在 https://github.com/benkitzelman/google-ajax-crawler 上用 ruby​​ 启动了一个 gem 来做这件事(现在接受 pull requests)

它作为机架中间件使用 capybara-webkit(很快 phantomjs)来实现

关于javascript - Handlebars.js 和 SEO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7685490/

相关文章:

java - 如何将参数传递给我正在扩展的模板,并在模板内使用它?

c++ - 为什么允许 "a.template foo<0>();"即使 "a.foo<0>();"已经足够了?

seo - shema.org 用于驾驶教练或其他学习中心的结构化数据类型

asp.net-mvc-4 - 同一站点不同域的robots.txt文件

search-engine - 搜索引擎忽略元描述内容并显示页脚

javascript - 引用数组的切片

javascript - 单个 javascript 对象属性中的多个 HTML div 元素

javascript - 如何通过点击时钟示例来更新输出值

javascript - jQuery - 如何确定点击了哪个链接

c++ - 遍历字符串 vector ,从控制台获取输入,给出段错误