所以我决定采用我一直在研究的项目和项目管理系统,并将其从标准的多页面应用程序转换为单页面应用程序。在这个过程中,我查看了许多javascript MV * ish框架(ember,knockout,backbone等...)并决定使用backbone.js,因为它似乎是最灵活的解决方案,而且我已经使用了下划线。它的实用程序和模板系统都是js。
我这样做的一个最大问题是我在PHP模型和骨干模型中对模型和业务/域逻辑的潜在代码重复。
这只是我在使用这样的架构时付出的技术成本,还是我可以采取一些措施来减轻这种担忧?
答案 0 :(得分:3)
您可能想看一下我之前回答涉及Node.js的问题:
Reusing backbone views/routes on the server when using Backbone.js pushstate for seo/bookmarking
我现在正在做的是使用Davis.js + Mustache + Java Spring MVC后备(基于我原来的问题:Single page Web App in Java framework or examples?)。
如果浏览器不支持Pushstate,那么我让服务器使用Java版本的Mustache(即标准Web 1.0)完成页面的整个呈现。如果浏览器确实支持Pushstate,那么浏览器将对该模型的JSON版本发出AJAX请求。然后,该模型呈现给客户端使用icanhz(即javascript胡子)。
如果您的逻辑的很大一部分是获取模型然后基于特定URL呈现它,那么这种方法非常有效。那就是你的业务逻辑“基于一些我将要呈现的URL”。这就是网络上大多数网站的工作方式(包括这个网站仍然是网络1.0)。显然,这不适合说实时聊天或HTML5游戏。
这里提到了这个设计的python版本:http://duganchen.ca/single-page-web-app-architecture-done-right/
我确定有人做过PHP版本。
答案 1 :(得分:1)