2

我目前正在开发的基于 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 mindWHERE interestedIS NULL”</li>
  • 控制 - 讨厌的程序员 - “class Something extends NothingAbstractClass{…}”</li>
  • 视图 - 传统上是图形/网页设计师的领域 - “”</li>

……还有一个新层:

  • 行为 - 交互和反馈设计师 - “CSS3 是新的黑色……”</li>

所以,我们正在重构,我想坚持最佳实践设计,但我不确定如何进行。我不想重新发明轮子,所以有人对我应该查看什么模式或已经做过脏工作的人提供任何代码示例有任何提示或提示吗?作为程序员,我如何为后端和前端重写应用程序,同时保持两者分开?

在你问之前,是的,我看过 Zend、CodeIgnitor、Symfony 等,不,它们似乎没有跨越服务器逻辑和客户端逻辑之间的界限!

4

1 回答 1

1

你和其他有头脑的人都在问这个问题,这是一个棘手的问题。一个真正优秀的信息架构师会考虑可用性、行为和流程,尽管他/她甚至可能不知道如何使用设计工具或能够绘图或编程。如果他们可以将界面放入草图中,设计师就可以将其变得漂亮。让设计师做那些看起来很舒服的 STATIC 东西——这就是他们擅长的。为 IA 提供他们可以为屏幕对象指定的前端行为库。他们不实现这些东西,他们只使用它。如果您使用诸如 JQuery 之类的前端工具,这会容易得多,如果您有一位非常了解设计和后端的前端专家,那就太好了。将您的 javascripts 分离到它们自己的目录中,并始终将它们链接为外部文件。所有 PHP 框架都有动态执行此操作的方法。我玩弄了一个配置结构的想法,该结构将文件映射到它们加载的所有前端内容,因此每个单独的视图只加载它需要的内容。但你是绝对正确的:客户端有一个完全另一个子 MVC,它主要存在于整个 MVC 的视图中。我认为您可以划分 Ajax 的东西(当视图需要引用回服务器时)我将 Ajax 控制器方法记录为 ajax 方法,否则不要调用它们。其中很多是让团队中的每个人都接受分工范式。它只会使他们编写更多解耦的可重用代码,无论您最终选择将其挂在什么框架上。你是对的,你可以对它们进行前端封装,但是它们都没有强制执行良好的前端封装,我认为这仍然属于 DYI 的领域。祝你好运。

于 2010-03-26T17:58:44.653 回答