7

我现在正处于我真的想以一种使其更具可扩展性和可管理性的方式组织我的代码的地步。我想在不使用框架的情况下更好地理解 javascript 中的 MVC 架构。

所以这是我迄今为止所理解的(如果我错了,请纠正我):

模型:网站/网络应用程序内容(图片、副本、可下载内容等)的有组织结构,还具有操作内容所需的逻辑。因此在 javascript 中,模型可以是 JSON 对象或对检索/更新数据库的 php 文件的调用,并且模型的逻辑可以是负责解析、正则表达式和组织内容的函数,然后可以将其交给去看风景?

视图:用户界面和模型数据/内容的可视化表示。它唯一的工作是显示内容并接受用户输入(如果适用)?

控制器:那么控制器唯一的工作就是充当模型和视图之间的中介吗?例如,如果视图需要数据,它会询问控制器,然后控制器会去模型获取数据,然后将其发送回视图吗?如果有任何用户输入,视图会将其发送到控制器,然后控制器将其发送到模型,然后模型会更新,此时控制器会通知视图模型已更新?

MVC 对我来说一直是并且仍然是一个困惑点,再加上它已经声明 MVC 在 javascript 中不是一个自然而然的东西(至少不像 php、java、actionscript 等......)

4

2 回答 2

9

第一个事实是 View 和 Controller - 在大多数情况下 - 非常接近。有时甚至是一样的。这不一定是坏事。如果你有一个表,选择一行,然后单击一个按钮,该按钮将更改所选行中的数据,该按钮显然将成为 View(您看到数据)Controller(您更改数据)的一部分。有更好的例子,我敢肯定......

第二个事实是,您会发现几乎与人一样多的关于 MVC 的意见;)

但就个人而言,我建议您不要盲目地遵循某些设计模式。MVC 是设计代码的良好起点,但最终,您的代码需要快速、稳定和可维护。而且,您(和您的团队)必须对代码感到满意。如果您最终得到遵循 MVC 模式的代码,那很好。如果没有,也可以。至少这是我对此的看法。

于 2012-04-18T15:14:48.790 回答
7

看代码一直是我学习的最佳方式,所以我想我会分享这些。

TODO mvc 比较许多不同的 JS MV* 框架

上面的链接比较了所有 JS mv* 框架。这个演示应该让你特别感兴趣,

Vanilla JS Todo mv* 实现

来源

从它的声音你了解 MVC 是什么,只是对如何在 JS 中实现它感到困惑,只需查看许多不同的框架(ember.jsbackbone.js等)及其来源即可在上面。待办事项列表是一个很好的起点。

于 2012-04-18T15:11:21.810 回答