2010-07-25 46 views
1

我知道MVC在PHP应用程序中备受好评,但我不确定它适合JavaScript。如果您认为不然,那么请解释您如何以及在哪里处理常见场景,如AJAX请求,数据保存(离线存储),演示文稿,如何处理控制器逻辑(您是否拥有前端控制器?)等等。几乎完整的基于JavaScript的Web应用程序的体系结构?

Model-View-Presentation怎么样?

我使用ExtJS并仅将服务器用于永久性数据存储。

+0

我们谈论的服务器端JS呢? – 2010-07-25 09:21:45

+0

服务器上的PHP,客户端上的JavaScript。 PHP是基于MVC,除了没有V.我想弄清楚如何处理JavaScript。 – Tower 2010-07-25 09:25:38

回答

1

如果你打算用JavaScript编码纯粹的UI,你能想到的东西你的PHP作为结束多Web服务的或API

基本上,您的视图将是您在JS中编写的Ext JS东西。为了处理您的数据,Ext前端会对您的“服务”执行请求。基本上你会在你的服务器上有一种模型 - 控制器体系结构,控制器的工作是处理请求并输出JSON(供你的Ext前端使用)

本质上,后端的“视图”只会从json_encode输出,然后由实际的基于Ext的视图使用。

在JS中,你可以拥有控制器,取决于你正在做什么类型的东西。如果您只是显示来自服务器的数据,则可能不需要太多独立的逻辑。如果您正在做一些更复杂的处理,将代码分离到单独的控制器和视图可能会很有用。

这主要取决于你想要分离多少逻辑。

+0

是的,我知道,但JavaScript呢?它是否有控制器,模型,视图或其他东西? – Tower 2010-07-25 16:40:08

+0

编辑答案,希望有帮助=) – 2010-07-25 19:51:38

0

我不知道我明白你要问你的问题,但我会给它一个镜头。

MVC是一种架构模式,其本质意味着尽可能保持数据模型,控制器和UI的松散耦合。

您正试图将其归结为技术层面,而这并没有什么意义。你可以用一个好的框架来做适当的MVC。只是为了说清楚,普通香草PHP 并不是给你良好的MVC支持。一个好的框架,比如CakePHP或CodeIgniter将会。

JS只是一个丰富客户端体验的好方法。这意味着,除非你在做服务器端的JS,否则你唯一拥有JS的地方就是在视图本身中。 AJAX请求与MVC无关。数据持久性也没有。除非你正在实现自己的控制器(并且你最好自己有一个该死的充分理由),否则你不应该担心它的内部逻辑。底线,如果你想做适当的MVC,使用合适的框架,并且所有的都将落实到位。

+0

那么,你是否建议我使用JavaScriptMVC或其他框架?我很肯定会在服务器上使用模型和控制器,但我不知道在客户端做出好的架构决策。你看,目前我的应用程序是将数百个JavaScript文件分割成一些文件夹和文件。这不是很方便,那么就需要有一个JavaScript架构,就像MVC到服务器端语言一样。 – Tower 2010-07-25 16:43:59

1

当写你能想到MVC的,因为几乎完整的JavaScript应用程序:

  • 观点:DOM
  • 控制器:目前JavaScript
  • 型号:JavaScript的阿贾克斯组合调用及其PHP(或任何)后端对应

PureMVC是一个非常酷的MVC框架。你应该检查一下。

1

我使用了相同的架构:在后端PHP的顶部主要是ExtJS的。

我的解决办法:

  • 与服务器严格JSON-RPC通信。服务器端API非常干净,它也是我们的第三方接口API。强制API与第三方接口使用的API相同使得您可以保持服务器端代码的清洁和最小化,这对安全性和性能很有帮助。
  • 重组件化架构,分成模块组组件(通常Ext.Panel衍生物)。每个组件都知道如何通过JSON-RPC调用请求其初始配置和数据,呈现其本身,并在必要时保存其状态。我尽量保持组件之间的通信清洁和记录。
  • 点播架构,根据需要通过JavaScript文件的其他组件加载。整个代码的目的是通过回调来进行初始化,使组件可以从服务器载入他们的依赖关系和渲染只是一个空的占位符它们初始化自己之前。

各个部件可以采用MVC模式,其中它是有意义的。无论如何,Ext倾向于鼓励MVC,将数据分离到商店并具有单独的渲染基础设施(尽管它将控制器逻辑与渲染的组件混合)。

相关问题