适用于完全基于Ajax的Web应用程序的好的PHP框架是什么?

7
我正在开发一个重点使用ajax的Web应用程序。整个应用程序都只在一个页面上,除了那些需要被索引的线程以外,它们在传统页面中。
因此,我必须要有非常结构化的JS代码,我想知道是否有任何适用于基于ajax的应用程序的框架?
例如,CodeIgniter、CakePHP和其他我所读到的框架并没有专注于这一点。它们只是根据MVC组织常规的php代码。
由于我的代码开始变得非常混乱(特别是js代码),我真的需要一些结构性的东西。是否有一种方法可以在JavaScript中拥有相同的MVC+OOP结构?我从未听说过有人谈论过这个。即使我将js代码放在单独的文件中,例如每个页面一个文件,也有很多行,当我需要添加一些新功能时,我感到迷失和束手无策。
如果有关于如何将其结构化的建议和想法,那将会很好!

12年后,我将使用Laravel。 - Mawg says reinstate Monica
6个回答

4
我认为你对此有误解。
AJAX-heavy网站或应用程序在其基础结构上与Web 1.0的对应物并没有太大区别。您仍然拥有相同的基本组件:HTTP请求和响应。只是使用AJAX时,您很少请求完整的HTML页面。大多数时候,您会请求HTML、XML或JSON的片段。
因此,仅因为您的网站/应用程序90%以上由AJAX驱动,并不意味着您需要放弃现有的MVC约定并寻找新的东西。
而且,大多数现代框架都内置了大量的AJAX内容:ZF、Symfony、Cake等。
编辑
我不知道有任何针对你所要求的内容的框架,无论是PHP还是JavaScript。话虽如此,你可能会从观看高性能JavaScript:为什么你所学的一切都是错误的, 设计丰富的Web体验高性能Ajax应用程序中获得一些收获,尽管它们现在已经有几年了。
另外,考虑深入研究那些AJAX应用程序,并了解它们的运作方式。基于ExtJS和jQuery UI的应用程序将是一个很好的起点。

我理解,我并没有说我想要放弃后端的MVC模式,我想知道如何组织前端的JavaScript/jQuery代码,因为我的应用程序有很多这样的代码。所以我需要一个PHP Ajax框架来处理它。我在网上找到了一份PHP Ajax框架列表。ZF是用于Java的吗? - ajsie
我明白了。我会编辑我的回答,提供一些信息。 - Peter Bailey
the first two links are ads - Emanegux

1
你可以看看Zephyr。我自己从未使用过它,但我知道它主要用于AJAX应用程序。

有趣的概念,但不幸的是没有太多的追随者,并且它使用cpaint,其开发已于2007年停止。 - ajsie

1

symfony框架非常适合Ajax,他们有一个经过深思熟虑的方法,涉及MVC后端和您的JavaScript代码,特别是流行的JavaScript库,如JQuery和Scriptaculous。

阅读Symfony Askeet教程中关于Ajax的章节值得您花费时间,以了解其他人如何实现它。此外,旧版Symfony书籍中的Ajax章节还概述了除Askeet教程中显示的搜索自动完成功能之外的其他用途。


1
你想要一个特殊的ajax,能够与其他框架集成吗?试试Cjax: http://cjax.sourceforge.net/examples/,非常适合重型ajax,具有ajax控制器和路由。
我被告知需要提供更多细节,所以在这里...
它允许您在PHP端编写ajax,并提供许多工具,使您的开发体验更加顺畅。它还可以节省大量时间,避免重复造轮子。
Cjax带有超过70个示例/样本/文档和API,可以让您用一行代码做出惊人的事情,否则会花费您数小时甚至数周的时间!您知道,通常的成功消息、lightbox、使用ajax提交表单和上传文件等常见功能,已经成为ajax函数的生态系统。
Cjax将所有的ajax代码整合到一个地方,使您的代码更加安全。Cjax还只有一个访问点,使您的应用程序或网站非常安全。Cjax允许您使用类,并通过调度程序路由您的ajax调用以达到您的ajax控制器。包括回调系统,让您在页面加载时进行ajax请求,但也可以在服务器上触发ajax请求后运行更多的ajax代码,并直接从后端与您的应用程序或网站进行交互,从控制器中进行操作。这使您可以自由地在不同的ajax方法之间来回切换,协同工作。还包括一种方式,可以通过一个ajax调用从后端操纵页面上的所有元素,所有这些都在一个ajax调用中完成。
Cjax是构建ajax功能的机器。使用非传统方法推动边界,让您只需编写很少的几行代码。
Cjax具有强大的功能,可以让您调用和使用现有的JavaScript,而无需对其进行更改。它真正让您以想要表达的方式来表达自己。您拥有旧的或新的自定义JavaScript,使用Cjax执行它 - 您可以将数据传递给现有函数,从后端实例化它们。您使用其他第三方库或代码 - 没问题。Cjax让您执行它,并从后端传递数据给它,您可以随时调用它们,没有限制,只有天空。您可以传递简单的字符串或整数,也可以传递整个数组或对象。你知道吗,事实上,这就是Cjax的插件,'插件'只是一种形式,但它们真正的作用是在Cjax中运行的自定义代码。如果您运行自定义代码,则已经构建了一个Cjax插件!
Cjax代码简单易懂,并采用约定优于配置方法来以最小的代价完成最多的工作。
我会给你一些例子: 分页:http://cjax.sourceforge.net/examples/pagination.php 自动完成、ajax上传等。

虽然这个链接可能回答了问题,但最好在此处包含答案的基本部分并提供参考链接。如果链接页面更改,仅链接的答案可能会失效。- 来自审查 - dbmitch
当然没问题 - idkwhat tosay

0

你能简要解释一下这些如何帮助我在JavaScript和PHP之间进行通信或JavaScript代码的结构吗? - ajsie
如果你遵循框架指南中的操作步骤,那么它就会正常工作。JSON响应与普通的文本/HTML响应完全相同,只是你得到的是JSON而不是HTML。因此,你正在寻找一个普通框架的好处,它可以减轻解析请求数据和提供正确响应的痛苦。如果我有一个ZF应用程序,我仍然可以使用我的核心代码库来通过XML或JSON与客户端通信。这些只是传输方式。但是框架可以帮助你指导如何创建/组织它,这也是你一开始想要的。 - Eric Butera

0

我制作这样的应用程序。我的架构:

  • 服务器端:Zend Framework
    PHP代码作为一组JSON-RPC Web服务公开。Web服务使用Zend_Json_Server实现,不生成任何HTML(所有UI都由客户端处理)。因此,服务器端代码相当有限(数据库交互、会话管理和安全性)。
  • 客户端:ExtJS
    代码从托管ExtJS框架的单个PHP页面引导,并在此之后按需动态加载JavaScript组件作为单独的文件。每个JavaScript组件调用Web服务来初始化自身并加载/保存数据。还有特殊的翻译文件(从PHP动态生成),用于修补类原型与翻译。
在这种方法中,Web服务不会返回任何预先生成的HTML。它们是数据桥梁,来回穿梭记录。所有UI构建都在客户端完成。Zend_Json_Server将PHP类公开为服务(该类的方法是服务的函数)。这使得PHP设计干净,并且在UI方面提供了最大的灵活性。移动前端围绕RIA前端使用相同的类构建。还可以轻松地在相同的Web服务上构建其他应用程序(例如Windows应用程序,iPhone应用程序等)。最少量的PHP代码可保持服务器开销低。
如果我是你,我会更关注你正在使用的JavaScript框架,而不是PHP框架。如果您正在进行整体ajax(没有基本的HTML回退),那么让服务器参与生成UI就毫无意义(只会拖慢应用程序)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接