我正在对单页应用程序的主干进行一些尽职调查,并想知道是否可以从服务器端的客户端重新使用相同的视图/路由,以便当google访问pushstate URL时,或者它是直接访问的,服务器可以生成与客户端骨干生成的完全相同的HTML。
必须维护两组独立的视图/路由,一个在客户端上,一个在服务器上,这将是一件痛苦的事。我已经在github上看到了backnode项目,但是这似乎有点遗漏了一点,你最终不得不两次编写相同的骨干路由器。
只是想知道在骨干网中使用pushstate url并且需要从服务器提供相同的视图时人们通常如何处理这种情况?是人们复制代码还是有更好的方法?
答案 0 :(得分:5)
我还没有尝试过这个,但是使用node.js和backbone这些想法可能会有所帮助:
http://andyet.net/blog/2011/feb/15/re-using-backbonejs-models-on-the-server-with-node/
http://bennolan.com/2010/08/13/pushstate-and-nodejs.html
基本上,唯一的方法就是让你不要两次写同样的东西就是让你的node.js服务器和前端客户端共享相同的路由/模型代码。如果您在服务器端使用其他东西(如Ruby),则必须将node.js放在应用服务器前面。然后为新客户端(推送状态和客户端js)创建node.js代理,并为旧/ bot客户端实际渲染工作。
另一个选择是执行jQuery Mobile所做的Hijax方法。制作大量HTML5页面的想法(您必须查看其路由才能看到)。
为了完整起见,您应该了解Google如何抓取AJAX:http://code.google.com/web/ajaxcrawling/docs/getting-started.html
答案 1 :(得分:0)
这个项目完全符合您的要求。您可能会对它进行检查感兴趣。 https://github.com/developmentseed/bones