对于一个网站,MVC模式是否只在服务器端使用?

时间:2009-08-01 06:58:14

标签: model-view-controller

经过十年的桌面应用程序开发,我正在进入Web开发领域。我正在尽可能快地学习高级概念,其中一个是MVC。我注意到像javascript,css和html这样的东西不属于M,V或者C.我没有在任何地方明确地读过它,但是我理解MVC模式只用于组织网站服务器端的代码和数据?如果这是一个奇怪的问题我很抱歉,请记住我是个菜鸟! :)

提前感谢您的帮助!

4 个答案:

答案 0 :(得分:5)

呈现的页面可以包含javascript,jquery和其他脚本机制。这些东西完全坐在视图中,并在客户端(在浏览器中)完成所有工作。

其余部分(模型和控制器)在服务器上运行。大部分视图本身都是从服务器端呈现的。

以下是将数据分组在一起并将输出呈现给浏览器的视图的一个小示例。

<ul>
<% foreach (var group in Model.GroupBy(item => item.Category)) { %>

   <li><%= Html.Encode(group.Key) %>
     <ul>

     <% foreach (var item in group) { %>
       <li><%= Html.Encode(item.Data) %></li>  
     <% } %>

     </ul>
   </li>

<% } %>
</ul>

请注意,那里没有javascript。此代码完全从服务器运行。 li和ul标签将传递到浏览器,创建一个无序的列表项列表。

输出在浏览器中看起来像这样:

Key1
    Data1
    Data2
    Data3
Key2
    Data4
    Data5

...等。

请注意,代码ALL位于服务器上,但其中一些代码在服务器上执行,其中一些(HTML和Javascript)传递给浏览器并在那里执行。

答案 1 :(得分:2)

MVC是一种组织源代码的方式。如果有源代码,您可以拥有三个中的任何一个。 MVC模式的任何部分都没有固有的客户端或服务器方面。

例如,最近我在纯javascript(如igoogle)中实现了一个小工具门户。我有一个模型类来加载和保存json数据blob中的小工具配置,并管理这些小工具的设置。然后我有一个视图,根据模型发出的事件自动渲染当前加载到模型中的小工具。最后,我有一个控制器,在应用程序的其余部分中转换菜单点击以更新模型。这是MVC,但纯粹是在javascript中,纯粹是客户端。

答案 2 :(得分:0)

当使用实现MVC思想的服务器端语言时,CSS,HTML和Javascript处理视图。 Javascript有点混乱,因为它更多地与控制器交互。

答案 3 :(得分:0)

不仅要组织代码和数据。关于视图:您可以使用常规网页执行任何操作:jQuery,JavaScript,Ajax,Knockout等。您可以与服务器端(控制器)进行Ajax通信。 MVC比一般的aspx Web应用程序工作得更快。 这对于理解项目/代码更好,并且花费更少的时间将代码引入团队中的新人。 最好维护并使用适当的架构设计,您不必从头开始重新开发prj。