【问题标题】:Is it a good idea to combine an Ajax/UI JS Framework (ext,jquery-ui) with an MVC PHP framework (zend, symfony)?将 Ajax/UI JS 框架(ext、jquery-ui)与 MVC PHP 框架(zend、symfony)结合起来是不是一个好主意?
【发布时间】:2009-11-25 23:56:36
【问题描述】:

我意识到这是一个非常笼统的问题,但我想我并不是真的在寻找明确的答案。作为 PHP 框架的新手,我很难理解它。

Javascript 框架,尤其是带有 UI 扩展的框架,似乎有一种类似于 MVC 的方法,将 JS 代码与设计分开。在后端使用额外的 MVC 框架似乎会让人感到困惑。

这通常用于主要由 AJAX 驱动的应用程序吗?是否有一种公认/通用的方法?

【问题讨论】:

  • Agile Toolkit 框架自下而上执行此操作。这是一种新方法,而且是紧密集成。 agiletoolkit.org

标签: php model-view-controller jquery-ui extjs


【解决方案1】:

在我看来,这是 MVC 的下一个合乎逻辑的步骤。您已经将数据访问(模型)、业务逻辑(控制器)和输出(视图)分开了——现在您只是将行为与标记分开。

根据我的经验,它与 AJAX 功能配合得非常好,因为您只需要更改视图即可以 JSON 或 XML 的形式返回必要的信息。

【讨论】:

  • 我想我在这个话题上有点倒退了。我对 jQuery 非常熟悉,但我从未真正接触过 MVC。
【解决方案2】:

一个简单的例子,说明它如何适合 Zend Framework 应用程序(这是我几个月前编写的一个演示应用程序):

  • 使用 MCV 框架构建功能齐全的网站(无需 javascript 即可工作)。
  • 修改控制器以了解“正常”请求和 AJAX 请求之间的区别(Zend 的上下文切换使这很容易)。
  • 添加 Javascript(在我的示例中为 jQuery)以干净地将链接替换为 AJAX 事件。

最终,PHP 应用程序知道 AJAX 请求需要 AJAX 响应(带宽更少,处理更少,只需 JSON 或 HTML 'sn-p'),但正常请求需要生成整个页面。

基本上,您只是使用 AJAX 来请求(或更新或添加数据)“视图”模板,而无需处理整个布局。 Zend 框架Context Switch Action Helper 可能有助于使这更有意义。

值得一提的是,上下文切换可以很好地使请求以不同的格式(HTML/XML、CSV 等)可用。

【讨论】:

  • 很高兴听到这个消息 - 如果您想联系我,我可以给您发送一些可能有帮助的源代码。
  • 将 MCV 部分放在客户端并让服务器端只是映射数据库的模型不是更有意义吗?因此该页面是在运行时构建的,并且服务器不会受到压力(我认为现在服务器处理是 Web 应用程序的弱点)。使用一个好的 MVC javascript 框架,您可以将 RESTful 路由到您的后端模型,该模型除了映射数据库之外还可以做任何事情!服务器端还可以管理会话、身份验证等...
  • @Bakaburg 这肯定是一种有效的方法了,javascript 的概念提供了 MVC。它本质上也是沙发应用程序的工作方式。只要知道,此时您将受到浏览器的支配,因为您的大部分应用程序代码都在那里。
【解决方案3】:

这是一个非常好的主意,因为 PHP MVC 框架与 JS 框架捆绑在一起


更新链接,感谢“例外 e”。

【讨论】:

  • 是否有特别适合 Ext(或 jquery + 控制器 + ext)的“最佳”框架,或者这是一个愚蠢的问题?
  • extjs 有不少人使用 ZF。任何框架都应该做,zf 做。 symonfy ajax 的正确链接是symfony-project.org/book/1_2/11-Ajax-Integration。您不会使用那里显示的示例,因为 ext 最适合构建没有 html 的完整应用程序。那里显示的示例混合了 html 和 javscript。 Jquery 和原型是库,而不是像 ext 那样的桌面组件系统。
【解决方案4】:

就个人而言,我们正在将 Zend(MVC 以及 Zend 框架的其他方面)与 jquery 一起使用,并且它可以很好地协同工作。由于并非所有来自 html 页面的交互都将通过 jquery (ajax) 进行,因此强烈建议使用标准 MVC 架构。您当然想要架构的层(分离模型和视图)并拥有 jquery(至少对我而言)以及能够异步执行 MVC 的附加“功能”。

【讨论】:

  • 我正在为未来的项目(希望如此)进行橱窗购物,但我现在正在开发的应用程序几乎完全由 ajax 驱动,由 jQuery + UI 提供支持。我没有 PHP 框架——只有 JS 函数,例如,ajax 加载某个脚本,该脚本根据其给定参数获取页面。一切都很简单,但最好不要在 HTML 页面中间放置大块 PHP,反之亦然。
【解决方案5】:

在后端使用额外的 MVC 框架似乎会让人感到困惑。

无需担心。例如,您可以在开发时独立使用 zend 框架和 extjs,它们是真正独立的产品。这些层之间的依赖关系应该保持简单。不用担心。

耦合度低,您只需设置从服务器应用程序查询数据的方法,并在客户端做任何您想做的事情。这些系统之间的界限很简单,不会让您感到困惑。
Extjs 并没有真正的 mvc 结构恕我直言。它提供了预定义的丰富组件。您可以通过一些配置来粘合这些组件,并设置可以从中获取数据的服务器的 url。

你如何让你的 zend mvc 响应 ajax?我建议您查看 zf 项目负责人的presentation about zf ↔ ajax

【讨论】:

    猜你喜欢
    • 2010-10-19
    • 2017-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-17
    • 2011-05-24
    • 2014-03-17
    • 2012-11-21
    相关资源
    最近更新 更多