在JavaScript中何时应该使用MVC框架?

11

我知道这个话题可能变得主观,因此与我正在工作的特定Web应用程序无关。

对于JavaScript,我没有使用像Backbone.js这样的MVC库,但我看到了将逻辑和视图分离的优点。另一方面,学习该框架并使应用程序适应它可能不值得花费时间。此外,在JavaScript中处理所有视图会使SEO变得更加困难,我想。

那么,如何决定是否根据Web应用程序的概念使用Backbone.js或类似框架呢?这决策取决于什么?

欢迎提供任何有助于让问题更加客观的帮助。


Underscore.js似乎有其他语言的端口。请原谅我的无知,但Underscore与MVC有什么关系?它似乎只是添加了一些实用函数。 - user1508519
它为JavaScript Web应用程序提供了模型视图。你说得对,它更像是一个工具集而不是框架。但我还没有完全掌握它。这里有一篇关于Backbone.js和传统MVC的文章 - danijar
2
当我第一次知道MVC也可以应用于JavaScript时,我感到非常惊讶... Angular、Underscore和Backbone是一些例子...但是什么时候使用它仍然是一个大问号...对此进行良好的解释将有助于许多人。+1为这个问题。 - HIRA THAKUR
3个回答

8
有许多客户端JavaScript MVC(或MV *)框架可供选择。大多数似乎对MVC有不同的理解,并且如何与您的Web应用程序一起工作。
如果您的客户端JavaScript中的复杂性变得难以管理,则应考虑MV *框架。如果您有一个团队正在构建高度动态的单页面应用程序(SPA),并且需要与后端进行大量异步通信,则应考虑它。否则,很容易出现非常混乱的JavaScript代码。
MV *框架将以以下一种或多种方式帮助您:
通过定义代码应如何结构化。这是根据框架的偏见程度而有所不同。例如,Backbone认为自己是一个库而不是框架,因此将更多的决策留给用户。 通过将HTML绑定到模型。因此,如果数据更改,则页面将自动更新(反之亦然)。 提供有用的功能,例如URL历史记录(用于单页面应用程序)和验证。

7
我认为这取决于您的项目。以下是一个检查清单,可以帮助您决定是否应该使用前端MV*框架。
  • 需要向后端发送大量ajax请求
  • 许多功能不需要完全重新加载页面。例如添加评论、分页或无限滚动。
  • 您在后端拥有模型/REST API。您可以在前端复制/使用相同的结构。
  • 您需要在不同页面之间共享逻辑/ DOM操纵函数。
如果我发现更多要点,我会添加更多内容。这只是我现在所能想到的,并不是一个完整的列表。欢迎提出任何建议。

1
你知道,MVC结构可以通过使用backbone.jsunderscore.js等类似库将其包含在javascript中,主要关注每个表单字段作为实体属性,以便实体可以用于不同的目的。MVC结构易于在javascript中进行操作,这对于事件绑定、DOM操作、序列化等非常有用。
选择哪种适合javascript的结构取决于应用程序的目的。MVVM结构可以通过angular.jsknockoutjs等库动态绑定视图组件到javascript中。MVVM架构可用于在不重新加载或ajax的情况下维护表单字段绑定。许多应用程序都通过在js中维护架构来实现,我只列举了其中一些。
例如:使用Backbone.js将表单输入序列化为JSON
在这个例子中,表单值被检索为模型,然后可以进行操作并添加业务逻辑,可以序列化或事件绑定,并可以进行打印或任何其他操作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接