这些只是我的想法,我想我会分享它们......
简单地说,MVC是用于将内容(模型)与表示(视图)分离的模式,并且具有定义如何收集两者的机制(控制器)。
如果您已经知道我要去哪里,我很有兴趣听取您对此事的看法。当然,MVC适用于服务器端机制以及所有这些,但在这里与我一起开箱即用。
网络的“访客”,无论是人类还是机器人/谷歌都可能会看到HTML及其附带的内容。编写结构化和有意义的HTML,并将其与使用CSS的表示分离,这些年来变得越来越重要,HTML5等未来的技术只通过提供更加注重内容的元素集以及使用它的机制来促进这种分离。纯粹的视觉表现。
考虑到这一切,我想知道在某种程度上说MVC范例是否适用于前端是否正确,其中:
有道理吗?不?
谢谢,
马丁
更新:VonC向我指了一篇肯定改变了我对控制器部分的看法的文章。浏览器也占据了控制器的主要部分,因为它处理大量用户交互以及模型和视图如何协同工作。
答案 0 :(得分:4)
如果你看起来足够努力,你通常可以找到MVC。
答案 1 :(得分:1)
我同意,虽然可以争论控制器。
说明了ZenGarden使用:
实际上,这是来自客户端的有效视角。
从服务器端(比简单的html页面服务器更复杂的服务器),MVC会有所不同。
这是MVC的服务理念视角
答案 2 :(得分:1)
不,有点......
您的HTML也位于您的表示层(View),尽管您的CSS应该包含字体,颜色等表示细节。
您的模型必须包含您的数据+业务逻辑,我真的不希望您将这些存储在HTML中 - 这是针对真正的编程语言,存储过程和DBMS来处理的。这些应该在服务器端。
但是为了遵循你的思路,我建议:
答案 3 :(得分:1)
我可以看到你的观点,但我想我会将HTML-CSS-Server / Browser更多地描述为Document-Viewer而不是MVC。如果所有内容都是静态的,则它是模型的表达式,为true,但模型嵌入标记中。即使我可以用CSS覆盖它,CSS实际上只是HTML中描述的底层表示的过滤器。 HTML描述了数据的视图以及数据本身。也就是说,我可以关闭CSS,我仍然可以查看数据。在MVC中,这是不可能的。
HTML和CSS之间也存在紧密耦合 - 两者都需要非常了解另一个。这违反了MVC的关键范例,其中组件松散耦合。特别是视图不对模型强制执行约束(除了可以查看数据的限制)。 HTML设计者被限制在CSS的域内操作或修改CSS以使其适用于HTML域。
此外,HTML无法对数据进行操作以进行持久更改。该模型的一个关键方面是执行业务规则的能力。 HTML不会对静态内容执行此操作 - Web设计人员通过选择HTML编码来执行此操作。
这不会使它变坏或无用。并非一切都必须是MVC。 MVC简单地描述了组织数据和代码的一种特定方式。它在解耦架构和可测试性方面具有一些特殊优势,但这并不意味着它是唯一可用的有效架构模式。
在我看来,静态HTML内容不是MVC,也不需要。
[编辑]我并不是说您不能在浏览器设计中使用MVC,或者MVC不适用于浏览器中静态内容的显示。我从内容提供商的角度来看这个,而不是浏览器程序员。 MVC可能是浏览器设计的完美逻辑选择。
答案 4 :(得分:0)
CSS绝对不是视图。相反,浏览器的渲染(将HTML / DOM和CSS输入组合成2d布局)是视图。 HTML / DOM就是模型。控制器是浏览器UI中的一半,但可以使用javascript进行扩展。
在谈论内容/表示分离时,CSS被认为是表示层 - 但这是一个不同的(正交)模型。
在MVC中,CSS是HTML / DOM的一部分,因为它是可以在不同视图中呈现的底层数据。例如,打印布局是基于相同模型的单独视图。