因此,我决定采用我一直在从事的项目和项目管理系统,并将其从标准的多页应用程序转换为单页应用程序。在此过程中,我查看了许多 javascript MV*ish 框架(ember、knout、backbone 等),并决定使用backbone.js,因为它似乎是最灵活的解决方案,而且我已经使用了 underscore。它的实用程序和模板系统都使用 Node.js。
这样做我最担心的一个问题是,我的 PHP 模型和主干模型中的模型和业务/域逻辑可能会出现潜在的代码重复。
这只是我在使用这样的架构时所支付的技术成本,或者我可以采取一些措施来减轻这种担忧?
最佳答案
您可能想看一下我之前回答的涉及 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,那么浏览器将发出 AJAX 请求以获取模型的 JSON 版本。然后将模型呈现给客户端使用 icanhz (即 JavaScript mustache )。
如果您的大部分逻辑是获取模型然后根据特定 URL 渲染它,那么这种方法效果相当好。也就是说,您的业务逻辑是“基于我要渲染的某个 URL”。这就是网络上大多数网站的工作方式(包括这个仍然是 web 1.0 的网站)。显然,这不适用于实时聊天或 HTML5 游戏等内容。
这里提到了这种设计的Python版本:http://duganchen.ca/single-page-web-app-architecture-done-right/
我确信有人已经做了 PHP 版本。
关于php - 主干和 PHP 模型代码重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10189359/