我已经阅读了大量关于 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 调用结果),您必须能够:
- 使用 hashbangs
#!
(即http://www.mysite.com/#!my-state
)通过 url 触发异步 js 渲染,以及 - 能够根据要求在 js 修改后提供您网站的预渲染 dom 快照。
如果使用客户端 MVC 框架,如 Backbone.js 或 Spine - 如果您希望将您的 Web 应用程序编入索引,则需要提供此服务。
通常这意味着您拦截网络机器人发出的请求(在上面的链接中解释),并使用 headless 浏览器(即 QT + capybara-webkit、HtmlUnit 等)抓取您的服务器端,然后将生成的 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/