关于 MVC 模式,视图层应该是“返回”HTML 数据的函数,还是视图层实际上是 HTML 数据本身?
5 回答
受 MVC 启发的 Web 模式中的视图类(在 Web 上实现经典 MVC 非常困难,仅使用 PHP 是不可能的)负责表示逻辑。然后创建对请求的响应并处理多个模板。
信息如何从模型层获取到所选视图的方式很大程度上取决于实现了哪种受 MVC 启发的模式。如果您使用 MVP 或 MVVM,则信息由控制器提供,并且视图是被动的(但视图不是哑模板)。如果您使用 Model2 MVC 或 HMVC 模式,则视图处于活动状态,从模型层请求信息。
当该视图获取了信息后,它决定与模板进行组合。或者即使模板是必要的。然后创建响应。
每个视图生成的响应可以是 HTML、JSON、XML 或纯文本。或者,如果需要,只发送一个 HTTP 标头(例如在进行重定向时)。这都是表示逻辑的一部分。
模型、控制器和视图的边界可以这样显示:
/* model models/post.php */
<?php
class Post {
public static all() {
return Array(...);
}
}
?>
/* controller /posts/index.php */
<?php
require "../../models/post.php"
$posts = Post.all();
require "../../views/posts/index.php"
?>
/* view /views/posts/index.php */
<?php foreeach ($posts as $post): ?>
<p><?php echo $post['name']; ?></p>
<?php endforeach; ?>
从意识形态上讲,它可能只是功能,但通常的做法是模板引擎中的模板。所以视图层是html + data insertions
(没有我们如何获得以及为什么的逻辑)。同样在思想上它也是函数,但不是框架的编程语言的函数,例如。
视图是“模板”
模型是“数据”
控制器是“连接器”和算法的地方。
视图层受制于您希望在客户端上作为演示文稿可见的内容。在大多数情况下,它是 HTML、CSS 和 Javascript,您也可以使用 XML 和 JSON。
一般来说,
控制器要求模型提供数据。
控制器可以根据需要对这些数据进行更改。
控制器在模板/html 的帮助下将数据发送到视图以呈现。
视图层是返回 HTML 数据的函数