Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript在web应用程序的MVC模式中位于何处?_Javascript_Model View Controller - Fatal编程技术网

JavaScript在web应用程序的MVC模式中位于何处?

JavaScript在web应用程序的MVC模式中位于何处?,javascript,model-view-controller,Javascript,Model View Controller,在构建web应用程序时,我仍然对JavaScript代码在MVC模式中的位置感到困惑。我以为是这样的 模型是数据库和数据库 获取数据所需的类 输入/输出 控制器将是我编写逻辑的类 也就是说,Java servlet接受 Ajax请求,然后调用 数据库 视图是JSP页面,它是 通过返回到Ajax请求 servlet(我的控制器) 因为JavaScript代码是在浏览器中编译的,所以我认为它是视图的一部分,但它处理用户输入,根据这些事件发出服务器请求,然后将数据返回到页面,这也会在控制器中产生影

在构建web应用程序时,我仍然对JavaScript代码在MVC模式中的位置感到困惑。我以为是这样的

  • 模型是数据库和数据库 获取数据所需的类 输入/输出
  • 控制器将是我编写逻辑的类 也就是说,Java servlet接受 Ajax请求,然后调用 数据库
  • 视图是JSP页面,它是 通过返回到Ajax请求 servlet(我的控制器)
因为JavaScript代码是在浏览器中编译的,所以我认为它是视图的一部分,但它处理用户输入,根据这些事件发出服务器请求,然后将数据返回到页面,这也会在控制器中产生影响吗


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

JavaScript将主要是一个与UI相关的问题;您的视图正在向控制器发出ajax请求。控制器没有发出ajax请求;模型也不是。无论出于何种目的,ajax请求与普通请求没有什么不同;只是在您的响应返回之前,浏览器不会挂起


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

Nick,我在MVC中的个人经验,使用或,我认为JavaScript代码将被视为视图的一部分,因为JavaScript代码有助于视图,并直接与视图交互。
通过Ajax发送和接收数据可以看作是一种请求。

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

您可以使用与服务器端代码建模类似的概念来建模JavaScript代码。JavaScript代码本身将通过服务器端应用程序的视图提供,但是除非您只是用JavaScript代码添加引人注目的东西(您不是),否则JavaScript代码实际上是它自己的实体,不一定适合您的服务器端MVC范例

尝试将JavaScript代码与服务器端的任何内容分离。只需考虑一个“附加”,如果在浏览器中禁用,不会中断应用程序的运行。我只是添加了一些细节以允许更好的交互,等等。如何实际建模JavaScript代码取决于您(但我强烈推荐主干)

你也可以用javascript做一个只有数据源支持的丰富前端。在这种情况下,javascript将再次负责维护模型、视图和控制器


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

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

当您开始谈论Ajax时,很容易将JavaScript代码视为正常流程中的其他内容,但您应该分解Ajax请求的过程,以了解它只是另一个HTTP请求

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


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

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

您推荐backbone.js而不是其他东西来实现MVC模式有什么特别的原因吗?(、等)从未使用过纯javascript MVC,但至少上次我看到它时,它似乎太过臃肿,无法满足我的需求。主干是一个非常干净、简单的实现,源代码易于理解,并且它以相当低的文件大小计时。我还刚刚发现它的继承模式非常好,这使得它非常适合javascript中的直接OO,即使您不使用任何视图/控制器的东西。