不依赖框架的MVC教程?
我想学习MVC"架构模式",但是我现在还不想跳入Rails或者Django之类的框架。我想先了解这个概念,然后在我目前熟悉的环境中写一些简单的代码,碰巧是PHP / HTML / CSS / MySQL。我不一定需要基于PHP的教程,因为我确实了解很多不同的语言。而且我不需要安装任何框架,API或者库。我只想学习如何在MVC中思考并将其应用于我的项目。有什么建议?
解决方案
几乎每个框架对MVC的处理方式都不同,因此我们最终可能会变得更加困惑。 MVC的一般原理非常简单:"模型是状态;视图对模型做出反应;控制器对视图做出反应;控制器更改模型"。模型,视图和控制器是概念,无论我们感觉到它们是什么。我们可以将其命名为类,类束,带有XML配置文件的类实例。
我实际上认为这涵盖了基本原理。没有框架,我们将走得更远。重要的是特定框架如何定义模型,视图和控制器及其交互。
最有趣的资源之一是Trygve Reenskaug的原始论文。 Wikipedia在MVC上也有很多与语言无关的信息。
在尝试之前,我不了解MCV模式。如果我们熟悉PHP,则可以尝试http://cakephp.org,它的PHP框架使用了大多数RoR范例。
除了Sander的答复外,我想说大多数框架还会混淆前端控制器和MVC。它们实际上是两个完全独立的概念,但是它们通常都存在于框架中。所以要当心。
查看此描述,示例和涵盖MVC基础知识的图表。
MVC是用于简单设计的出色设置,但通常与PAC混淆,后者与MVC相似且在MVC上进一步开发。两种设置都很棒,这两个链接提供了信息以帮助他们理解。
尝试这篇出色的文章:无框架的PHP MVC框架。它不能替代对MVC模式的介绍,但提供了简单而动手的示例。
MVC的主要优点是关注点分离。当我们编写代码时,如果不注意的话,可能会变得一团糟。因此,知道如何将模型,视图和控制器放在不同的"筒仓"中,可以长期节省时间。任何策略都是好的。
所以这是我的:
- 模型是在项目树的/ lib下找到的文件
- 视图是项目树中以.html结尾的文件
- 控制器是<form>动作属性中的url
不要问我如何,但是我从关于设计模式的优秀Wiki上找到了这个条目:
http://www.c2.com/cgi-bin/wiki?ModelViewController
许多有趣的讨论和指向各种资源的指针。
而且我只花了六天时间就找到了它!
MVC基本上只是将代码拆分为一个处理数据的模型,一个显示数据的视图和一个将数据从模型传递到视图的控制器。
不需要API或者框架,这只是拆分代码的一种方式。许多框架使用它的原因是因为它是一个非常简单的概念,它在很多情况下都可以很好地工作(完全适合网页),并且非常灵活(例如,使用Rails,我们可以在视图中或者模型/控制器中进行所有操作) ,如果我们需要的话..)
一个快速的python例子,一个示例MVC结构化的Python脚本。不一定是"最佳做法",但是它可以工作,并且非常简单:
class Model: def get_post(self, id): # Would query database, perhaps return {"title": "A test", "body": "An example.."} class Controller: def __init__(self): self.model = Model() self.view = View() def main(self): post = self.model.get_post(1) self.view.display(post) class View: def display(self, item): print "<h1>%(title)s</h1>\n%(body)s" % item c = Controller() c.main()
在蓬松的猫咪站点上查看Non-OO MVC
我们可以尝试此PHP MVC教程。它写的很好,很轻巧,只包含要点,我们可以在sourceforge上找到代码。
This tutorial will take you from the beginning to the end of building a MVC framework. The object is not soley to produce the finished MVC framework, although that will happen, but to demonstrate how MVC works and some of the concepts that lay behind it..