2011-04-18 52 views
12

构建Web应用程序时,我仍然对JavaScript代码在MVC模式中的位置感到困惑。我认为它是这样工作的。JavaScript在Web应用程序的MVC模式中的位置在哪里?

  • 模型是数据库并获取数据输入/输出 所需的 类。
  • 控制器将是我编写我的逻辑 的类,即Java servlet,它接受一个 Ajax请求,然后调用 数据库;
  • 视图是在JSP页面是 通过 的servlet(我控制器)

因为JavaScript代码在浏览器中,我认为它作为景观的一部分编译,但是回到了Ajax请求它处理用户输入,根据这些事件做出服务器请求,然后将数据返回给页​​面,那么这也会使控制器的一部分?

另外,它们在MVC中引用域模型时意味着什么?

回答

5

JavaScript将主要是与UI有关的问题;您的视图正在向控制器发出ajax请求。控制器没有发出ajax请求;模型也不是。对于所有意图和目的,ajax请求不是正常请求的任何内容;只是在您的响应返回之前,浏览器不会挂起。

JavaScript也在您的客户端上下文中执行,但不在服务器的权限范围内,因此它应该进入视图。

1

尼克,我在MVC的个人经验,与ZendSpring一起工作,我认为JavaScript代码将被视为视图的一部分,因为JavaScript代码有助于查看并直接与视图交互。 通过Ajax发送和接收数据可以被视为请求。

+0

@ Amir-感谢您的回复。 – screenm0nkey 2011-04-19 12:54:50

3

MVC只是一种模式。 JavaScript代码本身可以实现这种模式,所以我不认为它适合于服务器端框架模式的其他部分。查看Backbone,了解如何在JavaScript代码中使用MVC。

您可以将您的JavaScript代码建模为与您使用服务器端代码建模相似的概念。 JavaScript代码本身将通过服务器端应用程序的视图提供服务,但除非您仅添加带有JavaScript代码的眼睛糖果(您并不是),否则JavaScript代码实际上是它自己的实体,并不一定适合你的服务器端MVC范例。

尝试从任何服务器端分离JavaScript代码。只要认为它是一个'附加',如果在浏览器中禁用,不会中断您的应用程序运行。我只是添加了一些细致的问题,以便更好地进行交互等。实际上,如何实现JavaScript代码的模型取决于您,(但我强烈推荐Backbone)

也可以在JavaScript中只做一个Rich前端数据源。在这种情况下,javascript将再次负责维护模型,视图和控制器。

域模型通常只是指您的应用程序的业务逻辑。大脑可以说你的应用程序中应该发生什么。这是一种封装应用程序所有业务逻辑的抽象概念。

+0

为什么你推荐backbone.js而不是其他的实现MVC模式的特殊原因? ([PureMVC](http://trac.puremvc.org/PureMVC_JS),[JavascriptMVC](http://javascriptmvc.com/)等) – Paolo 2011-04-18 16:42:43

+0

从来没有与纯粹的工作,但JavaScript MVC,至少在最后一次看着它似乎太臃肿,我所需要的。主干是一个非常干净,简单的实现,源代码很容易遵循,它的文件大小非常小。我也刚刚发现它的继承模式非常好,即使你不使用任何视图/控制器的东西,也可以直接在JavaScript中使用OO。 – brad 2011-04-18 19:40:01

+0

+1谢谢你。这是一个非常好的回应。 – screenm0nkey 2011-04-19 12:51:10

1

JavaScript代码是视图的一部分。该视图是输出到浏览器的内容,虽然Javascript代码不会自动具有可视外观,但它可用于修改DOM。

当您开始谈论Ajax时,很容易将JavaScript代码看作正常事物流中的其他东西,但是您应该打破Ajax请求的流程以查看它仅仅是另一个HTTP请求。

有些人只会有一个控制器来处理Ajax请求,而另一些人可能会传递一个参数给描述Ajax请求以修改输出的控制器。

无论哪种方式,JavaScript代码都位于视图中,您可能需要在MVC设置中学习一些关于Ajax的其他设计策略。

+0

+1感谢您的回复。 – screenm0nkey 2011-04-19 12:55:54

0

如果您使用JavaScript来处理DOM,那么是的,它是View的一部分。但是您仍然可以在服务器端使用JavaScript,在这种情况下,它可能是与业务相关的代码的一部分。

相关问题