【发布时间】:2010-02-28 15:03:27
【问题描述】:
我目前正在开发的基于 Web 的应用程序正在长臂和长腿!它基本上是一个管理系统,可帮助用户跟踪预订、用户帐户、发票等。也可以使用相当粗糙的 API 通过几个不同的网站访问它。
胖客户端设计松散地遵循 MVC 模式(或者可能是 MVP),带有一个 php/MySQL 后端、前端控制器、几个不同的页面控制器、大量的面向对象和过程模型、一堆令人困惑的视图和模板、一些 JavaScript、CSS 文件和 Flash 对象。
我的程序员是“关注点分离”原则的忠实拥护者,因此,我目前正在尝试找出分离和的最佳方法/strong> 随着项目的发展和更多人的贡献,将各种关注点结合起来。
我们面临的问题是,尽管 JavaScript(或带有 ActionScript 的 Flash)通常是用模板编写的,因此是 View 的一部分并与 Controller 和 Model 分离,但我们发现它实际上包含了整个 MVC 模式。 .. 用鼠标悬停事件交换图像 - 这就是行为。渲染一个数据网格——我们正在操作视图。通过 AJAX 发送重新排序列表的结果 - 现在我们处于控制之中。检查表单字段以查看电子邮件地址的格式是否有效 - 我们正在咨询模型。
让数据库人员用 jQuery 编写验证模型是否明智? php 程序员可以用 JavaScript 编写必要的控制结构吗?网页设计师真的可以为他们的视图编写一个功能性的 AJAX 表单吗?每个项目都应该有一个 JavaScript 霸主吗?
如果 MVC 模式可以应用于人而不是代码,我们最终会得到这样的结果:
- 模型 - 数据库研究人员 - “SELECT * FROM
mindWHEREinterestedIS NULL” - 控制 - 讨厌的程序员 - “class Something extends NothingAbstractClass{…}”
- 视图 - 传统上是图形/网页设计师的领域 - “”
……还有一个新层:
- 行为 - 交互和反馈设计师 - “CSS3 是新的黑色......”
所以,我们正在重构,我想坚持最佳实践设计,但我不确定如何进行。我不想重新发明轮子,所以有人对我应该查看什么模式或已经做过脏活的人提供任何代码示例有任何提示或技巧吗?作为程序员,我怎样才能为后端和前端重写应用程序,同时保持两者分开?
在你问之前,是的,我看过 Zend、CodeIgnitor、Symfony 等,不,它们似乎没有跨越服务器逻辑和客户端逻辑之间的界限!
【问题讨论】:
-
你能举一个具体的例子来说明你的目标吗?
-
我的目标是找到一种最佳实践设计模式,让编写后端 php 模型、视图和控制器的人可以以某种方式动态地将相同的 MVC 逻辑写入前端 Javascript,而无需混合 JavaScript 和 php,复制代码意图或让 UI 人员弄乱代码 - 因此是后端 MVC V 中的一种前端 MVC。我是新来的 - 如果不清楚,我应该编辑我的问题吗?
-
+1 有趣的问题。现在我正在使用 PHP json_encode 将全局设置放入一个 JavaScript 变量中。但这还不够,还有重复的代码。
-
似乎我们不是唯一考虑这个问题的人 - 我在任何地方都没有找到任何具体的例子!不过请看这里:lebensold.net/development/mvp-or-mvc-or-neither
标签: php model-view-controller saas fat-client