14

几天前我问过这个问题,没有人回答。
我也问forum.javascriptMVC.com过它,现在我有了答案,但是我需要更多的想法。

问题:

I read javascriptMVC's documents and I loved it. 
But I don't know how to use it in a large scale project.

我认为在服务器端需要一个 MVC 框架,或者可以提供很多帮助。而且我使用过服务器端 PHP 框架。

我很困惑,我对 JavascriptMVC 项目的理解是它们处理浏览器捕获事件上的客户端事件,执行 AJAX 请求,管理来自服务器的响应/数据,并在图形界面中向用户显示它们。

我知道在 PHP MVC 项目中我们也有控制器(和动作),它们中的任何一个都是具有单个入口点的单独页面,我的观点是这些页面是整个 HTTP 请求。

我认为这两个框架的组合将采用单个几个重文件(包括 js 、 css 、 imgs 等)的形式,这些文件由另一个 Javascript 库(例如steal.js)加载和管理。现在用户可以使用站点及其操作(作为事件),这些操作会导致运行 js 函数,这些函数可能会更改 UI 中的某些内容或导致 AJAX 请求,例如在 Yahoo Mail 中,大多数事情都发生在一个页面中。

那么这将如何影响 PHP 中控制器和操作的设计呢?我的意思是通常在 PHP MVC 框架中,很多控制器和操作意味着很多页面。我认为由于 AJAX,控制器和操作的数量实际上应该更少。我还认为由于 JMVC,大多数控制器(和操作)应该转向 AJAX 响应程序,但是在这种情况下如何处理布局和视图?

最后

  • 我想了解使用这种方法(JMVC+MVC)的不同方面。(我使用 Yii 作为我的服务器端 MVC 框架和 JavascriptMVC 作为我的客户端 MVC)。
  • 我还想了解客户端的数据管理。
  • 我想了解如何使用 AJAX 和 web-sockets,我们可以在哪里使用 AJAX 以及我们可以在哪里使用 websockets?
  • 我想了解本地存储,我们如何将其用于模拟页面数据管理和缓存,我们如何将来自服务器的数据缓存为页面形式的 JSON?我正在做一个非常大的项目,我想建立一个非常强大的基础。
4

3 回答 3

4

假设你有一个 JMVC 框架,其中

  • 该模型使用 AJAX 请求从服务器获取数据 - 期望 JSON 结果。
  • 视图不依赖于服务器,更多的是提供原始 HTML。
  • 控制器不依赖于服务器,更多的是为 JS 文件提供服务。

本质上,您使用服务器“应该”用于数据存储和处理,同时让您的客户端浏览器处理所有繁琐的事情。

现在,让我们看看如何定义一个服务器端框架。正如我所看到的,我们有几个选项,它们都非常相似,尽管有些不同(都以 JSON 格式返回一些内容):

  • 一个成熟的 MVC,例如 cakePHP
  • 自定义实现
  • 网络服务实现

就我个人而言,我会使用 WebService,而且我已经有了。或者更确切地说,我使用了基于 WebSocket 的 JSON-RPC WebService。使用成熟的 MVC 将在可维护性和服务器负载方面存在缺陷。但很有可能,只需实现一个将页面格式化为 JSON 的视图......

在我看来,制作 JMVC 客户端并不意味着它不能从服务器请求新的 HTML。但这确实意味着请求的 HTML 应该没有数据,除了元数据之外,Java-View 需要知道将接收到的数据放在哪里,例如 WebService。

所以 JMVC 中的主页可能只包含一个

<div id=content></div>

并且菜单点击可以从服务器获取子页面并将内容加载到content. 然后,加载的内容可以包含更多的 javascript,这些 javascript 启动 WebService 请求以从服务器获取数据,以显示在它依次包含的空位置文件夹中。

于 2013-04-08T06:18:11.787 回答
3

首先检查https://stackoverflow.com/a/4458566/718224之后您可以继续前进。


试试这个(来自https://stackoverflow.com/a/8424768/718224

不,您不需要在服务器端使用它,但它有助于组织/分离应用程序和业务逻辑。根据您的应用程序的规模,这在未来可能会有很大帮助。

关键是确保你很好地组织你的后端代码,否则你最终会得到一个单一的和/或难以维护的代码库。

服务器端视图将包含您的 HTML 和任何可能会或可能不会向服务器发出请求的 JavaScript。这假设您实际上是在使用 PHP 来构建用户导航到的页面。

如果您有一个使用 AJAX 请求自行构建的静态 html 页面,那么您可能根本不需要使用服务器端视图。您的控制器很可能会输出 JSON 数据。如果是这种情况,它不会降低模型和控制器的用处。


试试这个(来自https://stackoverflow.com/a/8424760/718224

如果您正在使用任何主要的 PHP 框架(CakePHP、Code Igniter、Symfony 等),那么您已经在使用 MVC。如果您的服务器端逻辑比几个非常简单的脚本更复杂,那么您可能应该使用列出的框架之一,在服务器和客户端上使用 MVC。

当今正在构建的许多(大多数?)大型 Web 应用程序正朝着对客户端和服务器端应用程序代码使用 MVC 框架的方向发展。对于许多大型应用程序,尤其是请求/响应服务器应用程序和事件驱动的浏览器应用程序,这是一种分离关注点的绝妙模式。


试试这个(来自https://stackoverflow.com/a/8427063/718224

Backbone.js 通过 RESTful JSON 接口连接您的应用程序。老实说,我发现它与 MVC 框架一起工作得非常好。如果您构建一个 RESTful API,您可以让您的服务器非常轻松地管理 CRUD 更新。您所有的服务器端代码都将负责保存 JSON 对象并将其发送回 Backbone.js。然后让你的大部分逻辑和魔法发生在 Backbone.js 框架中。


试试这个(来自https://stackoverflow.com/a/8078282/718224

首先,像 Backbone 这样的客户端 MVC 框架不仅仅适用于单页应用程序。您还可以使用它为更传统的应用程序的一个或多个视图添加一些丰富的交互。它们只是在客户端上提供结构和数据抽象。

接下来,这些客户端框架专门设计用于与您的后端 MVC 框架一起使用。Backbone.js(因为您专门标记了它)模型和集合与 REST 服务一起使用。他们将通过 GET/POST/PUT/DELETE 动词进行对话,并在发出异步请求时最终与后端的控制器进行通信。

在 Backbone 的情况下,它使用 JSON 而不是 HTML。对于 Rails,这在控制器中很容易处理。如果请求是 HTML 请求,则返回 HTML 视图。如果是 JSON 请求(*.json 或 Content-type),则控制器返回数据的 JSON 表示。我假设在 Django 中和在 Rails 中一样容易让同一个控制器响应多个内容请求(HTML、XML、JSON 等)

这可以帮助你。

于 2013-04-11T06:49:18.113 回答
2

客户端Web应用程序和富客户端网页经常使用jmvc backbones等等,如果HTML5像你这样的js库和技术webstorage可以有更多的应用程序,比如网站,所有事情都发生在客户端,比如模板管理等等,而我们有ajax 请求/响应服务器以获取/设置数据或更新状态。和 abput 第一部分他们是正确的 jmvc 网站更像是一个单页网站。即 hotmail yahoo 等。

于 2013-09-13T12:18:50.740 回答