我目前正在开发的基于 Web 的应用程序正在增长手臂和腿!它基本上是一个管理系统,可以帮助用户跟踪预订、用户帐户、发票等。它也可以使用相当粗糙的 API 通过几个不同的网站访问。
胖客户端设计松散地遵循 MVC 模式(或者可能是 MVP),带有 php/MySQL 后端、前端控制器、几个不同的页面控制器、大量的面向对象和过程模型、一堆令人困惑的视图和模板,一些JavaScript、CSS 文件和 Flash 对象。
我的程序员是“关注点分离”原则的忠实拥护者,在这一点上,随着项目的发展和更多人的贡献,我目前正试图找出分离和组合各种关注点的最佳方式.
我们面临的问题是,尽管 JavaScript(或带有 ActionScript 的 Flash)通常是用模板编写的,因此是 View 的一部分并与 Controller 和 Model 分离,但我们发现它实际上包含了整个 MVC 模式......交换带有鼠标悬停事件的图像 - 这就是行为。渲染一个数据网格——我们正在操作视图。通过 AJAX 发送重新排序列表的结果 - 现在我们处于控制之中。检查表单字段以查看电子邮件地址是否采用有效格式 - 我们正在咨询模型。
让数据库人员用 jQuery 编写验证模型是否明智?php 程序员可以用 JavaScript 编写必要的控制结构吗?网页设计师真的可以为他们的视图编写一个功能性的 AJAX 表单吗?每个项目都应该有一个 JavaScript 霸主吗?
如果 MVC 模式可以应用于人员而不是代码,我们将得到以下结果:
- 模型 - 数据库研究人员 - “SELECT * FROM
mind
WHEREinterested
IS NULL”</li> - 控制 - 讨厌的程序员 - “class Something extends NothingAbstractClass{…}”</li>
- 视图 - 传统上是图形/网页设计师的领域 - “”</li>
……还有一个新层:
- 行为 - 交互和反馈设计师 - “CSS3 是新的黑色……”</li>
所以,我们正在重构,我想坚持最佳实践设计,但我不确定如何进行。我不想重新发明轮子,所以有人对我应该查看什么模式或已经做过脏工作的人提供任何代码示例有任何提示或提示吗?作为程序员,我如何为后端和前端重写应用程序,同时保持两者分开?
在你问之前,是的,我看过 Zend、CodeIgnitor、Symfony 等,不,它们似乎没有跨越服务器逻辑和客户端逻辑之间的界限!