2

所以我决定采用一个我一直在做的项目和项目管理系统,并将其从标准的多页应用程序转换为单页应用程序。在此过程中,我查看了许多 javascript MV*ish 框架(ember、knockout、backbone 等),并决定使用backbone.js,因为它似乎是最灵活的解决方案,而且我已经使用了下划线。 js 的实用程序和模板系统。

我这样做的最大担忧是我的 PHP 模型和骨干模型中的模型和业务/域逻辑可能存在代码重复。

这只是我在使用这样的架构时支付的技术成本,或者我可以做些什么来减少这种担忧?

4

2 回答 2

3

您可能想看看我之前回答的涉及 Node.js 的问题:

使用 Backbone.js pushstate 进行 seo/书签时重用服务器上的主干视图/路由

我目前正在做的是使用Davis.js + Mustache + Java Spring MVC 支持(基于我最初的问题:Java 框架中的单页 Web 应用程序或示例?)。

如果浏览器不支持 Pushstate,那么我让服务器使用 Java 版本的 Mustache(即标准 Web 1.0)完成整个页面的呈现。如果浏览器确实支持 Pushstate,那么浏览器将对模型的 JSON 版本发出 AJAX 请求。然后在客户端使用icanhz(即 javascript mustache)渲染模型。

如果您的大部分逻辑是获取模型然后根据特定的 URL 呈现它,这将非常有效。那就是您的业务逻辑是“基于我将要呈现的某个 URL”。这就是网络上大多数网站的工作方式(包括这个仍然是 web 1.0 的网站)。显然,这不适用于实时聊天或 HTML5 游戏之类的内容。

这里提到了这个设计的python版本:http: //duganchen.ca/single-page-web-app-architecture-done-right/

我敢肯定有人做过PHP版本。

于 2012-04-17T14:37:58.950 回答
1

如果您在服务器和客户端中使用不同的语言,我认为不可能避免您担心的这种部分逻辑重复。

如果您确实想在服务器和客户端中使用相同的代码,则必须将所有代码移至唯一的通用语言:JavaScript。

有多个 JS 框架非常透明地集成了服务器和客户端之间的开发:derbymeteor,...

于 2012-04-17T11:18:13.157 回答