将Ajax / UI JS Framework(ext,jquery-ui)与MVC PHP框架(zend,symfony)结合起来是一个好主意吗?

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

Javascript框架,特别是使用UI扩展,似乎通过将JS代码与设计分离,具有类似MVC的方法。 看起来在后端使用额外的MVC框架会让人感到困惑。 </ p>

这主要是针对AJAX驱动的应用程序吗? 是否有接受/常用的方法?</ p>
</ div>

展开原文

原文

I realize this is a very generic question, but I guess I'm not really looking for a definitive answer. Being new to PHP frameworks I'm having a hard time getting my head around it.

Javascript frameworks, especially with UI extensions, seem to have their sort-of MVC-like approach by separating your JS code from your design. It just seems like it would get confusing to use an additional MVC framework on the backend.

Is this commonly done for primarily AJAX-driven applications? Is there an accepted/common way of doing it?

duanhe4155
duanhe4155 AgileToolkit框架从下到上执行此操作。这是一种新方法,它是一种紧密集成。agiletoolkit.org
9 年多之前 回复

5个回答



它是如何为Zend Framework应用程序组合的一个简单示例(这是我几个月前写的一个演示应用程序 ):</ p>


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

    </ ul>

    最后,PHP应用程序知道AJAX请求需要AJAX响应(带宽更少,处理更少,只有JSON或HTML'代码段'),但是 正常请求需要生成整个页面。</ strong> </ p>

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

    值得一提的是,上下文切换可以很好地提供不同格式的请求 - HTML / XML,CSV等。 </ p>
    </ div>

展开原文

原文

A quick example of how it can fit together for a Zend Framework app (and this is from a demo app I wrote a few months ago):

  • Use the MCV Framework to build a fully functional site (which works without javascript).
  • Modify the controller to understand the difference between a 'normal' request and an AJAX request (Zend's context switching makes this easy).
  • Add Javascript (in my example jQuery) to cleanly replace the links with AJAX events.

In the end, the PHP app knows that an AJAX request needs an AJAX response (less bandwidth, less processing, only JSON or HTML 'snippet'), but a normal request needs an entire page generated.

Basically, you're just using AJAX to request (or update, or add data to) the 'view' template, without having to process the entire layout. The Zend Framework Context Switch Action Helper may help this make more sense.

It's worth mentioning that context switching works well in making a request available in different formats - HTML/XML,CSV,etc.

douleijiang8111
douleijiang8111 随着javascript提供MVC的概念,这肯定是一种有效的方法。 它本质上也是沙发应用程序的工作方式。 只要知道,那时你就会受到浏览器的支配,因为大部分应用程序代码都在那里。
接近 9 年之前 回复
douzai9405
douzai9405 将MCV部分放在客户端并让服务器端只是映射数据库的模型会更有意义吗? 所以该页面是在运行时构建的,服务器没有压力(我认为现在服务器处理是Web应用程序中的弱点)。 使用一个好的MVC javascript框架,您可以将RESTful路由到您的后端模型,该模型可以执行任何操作,然后映射数据库! 服务器端还可以管理会话,身份验证等...
接近 9 年之前 回复
dongliang1223
dongliang1223 很高兴听到它 - 如果你想联系我,我可以发给你一些可能有帮助的源代码。
接近 11 年之前 回复
doufangzhang4454
doufangzhang4454 它开始有意义了,谢谢。
接近 11 年之前 回复




看起来在后端使用额外的MVC框架会让人感到困惑。 </ p>
</ blockquote>

无需担心。 您可以在开发时独立使用zend框架和extjs,它们实际上是独立的产品。 这些层之间的依赖关系应该保持简单</ em>。 无需担心。</ p>

耦合度很低,您只需要设置从服务器应用程序查询数据的方法,并在客户端执行任何操作。 这些系统之间的界限很简单,不会让你感到困惑。

Extjs并没有真正的mvc结构。 它提供预定义的丰富组件。 您可以使用某些配置粘贴这些组件,并设置服务器的URL以获取数据。</ p>

如何让您的zend mvc响应ajax? 我建议你查看关于zf↔ajax的演讲</ a >来自zf的项目负责人。</ p>
</ div>

展开原文

原文

It just seems like it would get confusing to use an additional MVC framework on the backend.

No need to worry about that. You can use zend framework and extjs for example independently while developing, they are really separate products. The dependencies between these layers should be kept simple. No need to worry.

The coupling is low, you only need to set up means to query data from your server-app and do whatever you want with in on the client side. The line between these systems is simple and won't confuse you.
Extjs doesn't really has an mvc structure imho. It offers predefined rich components. You glue these components with some configuration and set up the urls of your server where data can be fetched from.

How do you get your zend mvc respond to ajax? I recommend you to view the presentation about zf ↔ ajax from the zf's project lead.



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

根据我的经验, 它非常适用于AJAX功能,因为您只需要更改View以将必要的信息作为JSON或XML返回。</ p>
</ div>

展开原文

原文

It's the next logical step from MVC, in my opinion. You already separate your data access (model), from the business logic (controller), from the output (view) - now you're just separating behaviour from markup.

In my experience, it works really well with AJAX features, since you only need to change your View to return the necessary information as JSON or XML.

doushi1960
doushi1960 我想我现在对这个话题提出了一些反击。 我非常熟悉jQuery,但我从未真正处理过MVC。
接近 11 年之前 回复



这是一个非常好的主意,因为 PHP MVC框架与JS框架捆绑在一起</ strong>:</ p>

展开原文

原文

Its a very good idea, since the PHP MVC frameworks are bundled with JS frameworks:


updated link, thanks "Exception e".

douyong1905
douyong1905 在extjs上有很多人使用ZF。 任何框架都应该这样做,zf确实如此。 symonfy ajax的正确链接是symfony-project.org/book/1_2/11-Ajax-Integration。 你不会使用那里显示的例子,因为ext最适合构建一个没有html的完整应用程序。 这里显示的例子混合了html和javscript。 Jquery和prototype是库,而不是像ext这样的桌面组件系统。
接近 11 年之前 回复
doushou9028
doushou9028 是否有一个特别的框架,对于Ext(或jquery + controller + ext)来说是一个“最好的”,或者是一个愚蠢的问题?
接近 11 年之前 回复



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

展开原文

原文

Personally we are using Zend (MVC as well as other aspects of the Zend framework) with jquery and it works very well together. Since not all of your interaction from the html page will be via jquery (ajax) then a standard MVC architecture is highly recommended. You certainly want the layers of your architecture (separating the model and the view) and having jquery is (at least to me) and additional "feature" of being able to execute your MVC asynchronously.

dtby67541
dtby67541 我正在进行项目的窗口购物(希望如此),但我正在开发的应用程序几乎完全是由jQuery + UI驱动的ajax驱动。 我没有PHP框架 - 只是JS函数,例如,ajax加载某个脚本根据给定的参数获取页面。 一切都很简单,但在HTML页面中间没有大块的PHP会很好,反之亦然。
接近 11 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问