【发布时间】:2012-08-22 09:25:32
【问题描述】:
我阅读了很多关于客户端 JavaScript 应用程序和搜索引擎机器人爬取方法的资料。 我发现了两种通用方法:
工作流程 1:
前提条件: 整个 Web 应用程序优雅地降级,并且可以在没有 JavaScript 的情况下使用。因此搜索引擎机器人可以抓取。
- 用户来自 google 搜索到特定主题
- 以纯 html 格式尽可能快地加载主题
- JS App Framework 在后台加载
- 一旦准备好,JS App Framework 就会接管所有的操作和路由等。
工作流程 2:
前提条件: 服务器后端是根据 Google 的 ajax 抓取指南 (https://developers.google.com/webmasters/ajax-crawling) 设计的,并返回到 escaped_fragment url(例如 www.example.com/ajax.html?_escaped_fragment_=key=value )纯 html。据我了解,http://phantomjs.org/ 之类的东西可以用来确保没有前端代码重复。
- Google 在其结果中显示 ajax 网址
- 使用 ajax url #! 发出请求!
- emberjs 应用程序已初始化,并根据 URL 加载所需的状态。
问题:
一个可抓取的 emberjs 应用程序堆栈应该是什么样子才能为搜索引擎机器人和前端 js 框架提供服务器端渲染? emberjs 核心开发人员推荐什么来实现这一点? (例如 Node + Emberjs + phantomjs +- x OR Rails + Emberjs + y OR Playframework + Z)?
我知道可能有很多方法可以到达那里,但我觉得使用 stackoverflow 过滤掉常用方法会很好。
旁注:
我已经看过一些想要创建开箱即用的完整堆栈的 JS 框架。在此处命名:
- http://derbyjs.com/(不错的方法,但仍处于 alpha 阶段)
- http://batmanjs.org/(不清楚生产准备如何(特别是后端))
- http://www.firebase.com/(有点不同,但如果他们获得正确的安全性也会很有趣)
- http://meteor.com/(也是预览状态)
- http://developer.yahoo.com/cocktails/mojito/
我特别询问 emberjs,因为我喜欢他们的方法,而且我认为它背后的团队绝对有能力构建最好的框架之一。
【问题讨论】:
-
这里的资源很好的开始......不幸的是 - 除非我错过了什么 - 我不认为#2是一个可行的答案。感觉像是用phantomjs之类的东西向自己请求一个页面,然后处理然后发送给客户端,不是很优雅,也不是很可扩展……
标签: javascript ruby-on-rails node.js playframework ember.js