【发布时间】:2012-04-30 00:49:19
【问题描述】:
我现在正处于我真正想以一种使其更具可扩展性和可管理性的方式组织我的代码的地步。我想在不使用框架的情况下更好地理解 javascript 中的 MVC 架构。
这就是我目前所理解的(如果我错了,请纠正我):
型号: 网站/网络应用程序内容的组织结构(图片、副本、可下载内容等...) 这也具有操作内容所需的逻辑。因此在 javascript 中,模型可以是 JSON 对象或对检索/更新数据库的 php 文件的调用,并且模型的逻辑可以是负责解析、正则表达式和组织内容的函数,然后可以将其交给去看风景?
视图:用户界面和模型数据/内容的可视化表示。它唯一的工作是显示内容并接受用户输入(如果适用)?
控制器:那么控制器唯一的工作就是充当模型和视图之间的中介吗?例如,如果视图需要数据,它会询问控制器,然后控制器会去模型获取数据,然后将其发送回视图吗?如果有任何用户输入,视图会将其发送给控制器,然后控制器将其发送给模型,然后模型会更新,此时控制器会通知视图模型已更新?
MVC 对我来说一直是并且仍然是一个困惑点,再加上它已经声明 MVC 在 javascript 中不是一个自然而然的东西(至少不像 php、java、actionscript 等...... )
【问题讨论】:
-
尝试从 Javascript 中查看 MVC,阅读一些关于它的理论。然后你可以用你选择的任何语言应用这些方法。
-
我还没有看到在 JavaScript 中从头开始实现 MVC 的纯 MVC 实现。 TodoMVC 中的 vanilla js 实现绝对不是真正的 MVC,尽管它具有不同层的分离。请参阅我对已接受答案的评论。 Head First Design Patterns 中的插图可能会有所帮助:codereview.stackexchange.com/questions/42353/…
-
从头开始缺乏真正的 mvc 的原因是涉及的样板代码量。普通的 TodoMVC 应用程序包含 900 多行 JS,但缺少真正 MVC 的基本部分。 “绵羊”的回答解释了为什么这不一定是坏事;)
标签: javascript model-view-controller