我读了很多关于客户端 JavaScript 应用程序和搜索引擎机器人爬取方法的东西。我发现了两种通用方法:
工作流程 1:
前提条件: 整个 Web 应用程序优雅地降级,并且可以在没有 JavaScript 的情况下使用。因此,搜索引擎机器人可以抓取。
- 用户来自谷歌搜索到特定主题
- 主题以纯 html 尽可能快地加载
- JS App Framework 在后台加载
- 一旦它准备好,JS App Framework 就会接管所有的动作和路由等等。
工作流程 2:
前提: 服务器后端是按照谷歌的ajax-crawling指南(https://developers.google.com/webmasters/ajax-crawling)设计的,返回escaped_fragment urls(eg www.example.com/ajax.html?_escaped_fragment_=key =value ) 纯 html。据我了解,可以使用类似http://phantomjs.org/的内容来确保没有前端代码重复。
- 谷歌在他们的结果中显示了 ajax URL
- 使用 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,因为我喜欢他们的方法,而且我认为它背后的团队绝对有能力构建最好的框架之一。