问题 Javascript MVC框架[关闭]


现在有很多Javascript MVC框架可供使用(Backbone.js,Cappuccino,Ember.js,GWT等),每个框架都有自己的正面和负面。 我的问题是;

  1. MVC框架提供的正常Javascript的实际好处是什么?
  2. 所有框架都主要基于jQuery吗?
  3. 如何决定采用哪种框架?在确定某个框架之前,需要提出哪些问题?
  4. 我对MVC的一个具体问题是,有一些框架在模型/数据发生变化时立即更新视图......那么可以通过AJAX实现吗?

请以非常基本的实际条款告诉我..


1632
2018-02-27 16:39


起源

可能重复 哪个JavaScript框架(jQuery vs Dojo vs ...)? - dynamic
这不是那个问题的重复。 Testndtv询问mvc框架,你指的是一个关于dom-manipulationing,visual frameworks的问题。 - laurens peeters
@laurens peeters:绝对正确......我指的是Javascript MVC框架,而不是普通的jQuery,Dojo,Mojo等等 - testndtv


答案:


  1. 优点:

    • 可重复使用的代码
    • 视图逻辑与业务逻辑的分离
    • 更易于维护/记录
  2. 不。例如,ExtJS的起源来自GWT(如果我没记错的话)

  3. 您可以看一下您尝试做的事情的复杂性和规模,并根据您需要的功能权衡框架学习曲线/费用(时间和金钱)的优缺点。例如,如果您需要功能强大的数据网格和高级小部件,那么extJS可能就是您的选择。但是,如果你需要更轻松的东西,Django可能是更好的选择(仅举例)
  4. 是的,所有这些都是通过AJAX完成的。在ExtJS 4中,当您将记录添加到连接到网格的商店时,网格会自动更新。

我希望这有帮助。


3
2018-02-27 16:45



ExtJS来自yui - SriN


MVC提供了超越标准JavaScript的架构优势 - 它可以帮助您编写更有条理,更易于维护的代码。这是一种在多种语言和几代程序员中使用和广泛测试的模式。有可能,如果你想做某事,其他人已经做过,所以使用经过时间考验的模式可以帮助你利用模式的好处,而不会犯下早期程序员所犯的错误,从而节省你的时间和精力

Backbone不是基于jQuery,但它与jQuery兼容,并且如果你使用它,它会给你一些好处,例如:在视图中,它为您提供了对$ el中视图容器的缓存引用。但是如果你使用Zepto而不是jQuery,$ el包含在Zepto功能而不是jQuery中。

YUI有MVC组件,完全不是基于jQuery;)

根据当前项目的需要,框架的文档,基于它的社区等来决定使用哪个框架。与选择使用哪个JS库或使用哪个后端框架等相同。什么是一个人/项目的权利可能不适合另一个人/项目


4
2018-02-27 16:48





  • MVC框架提供的正常Javascript的实际好处是什么?
  • 当您需要在应用程序中组织代码和单独的关注时,框架非常有用
  • 所有框架都主要基于jQuery吗?
  • MVC框架与jQuery无关,jQuery主要是在这里做DOM操作,动画,但是它们可以在jquery中找到像事件系统,Ajax等那样的功能...... 如何决定采用哪种框架?在确定某个框架之前,需要提出哪些问题?
  • 您需要测试它们,编写没有框架的应用程序,然后尝试使用框架重构代码,看看它是否易于使用。
  • 我对MVC的一个具体问题是,有一些框架在模型/数据发生变化时立即更新视图......那么可以通过AJAX实现吗?

  • 他们都以某种方式这样做,这就是MVC的目的。当模型发生变化时,会通知视图并重新渲染自己......但是他们以不同的方式执行此操作。

现在 在我看来,使用jQuery,一个人不应该真正需要一个“外部”MVC框架,因为jQ已经有一个内置的事件系统,很多辅助函数,并且javascript对象足够动态,可以动态附加任何行为他们没有定义对象的“类”。

我的观点是:你可以用jQuery做你自己的MVC,所有工具都已经在库中。

如果你需要其他东西,比如“路由器”,验证助手,脚手架等......那么MVC框架就是你要走的路。


4
2018-02-27 16:58



我不会说他们都会在模型更改时自动重新渲染视图。 Backbone让您可以实现视图的渲染,包括在模型更改后重新渲染视图。在使用jQuery时,仍然需要MVC(或其他一些架构模式)。已经确定单独的jQuery不是为创建“大型”,非平凡的JavaScript应用程序而设计的,也没有用,请参阅: blog.rebeccamurphey.com/on-jquery-large-applications - danwellman
当然,你需要在模型改变时对视图的行为进行编码,框架不是一个神奇的东西,你只需将.js文件放在你的html中就可以了。 - mpm
根本没有,一些框架,如Knockout.js, 做 在模型数据发生变化时,神奇地为您重新渲染视图。如果你知道,你为什么这么说 他们都以某种方式这样做,这就是MVC的目的? - danwellman
在我看来,Knockout根本不是MVC。它更像是mvvm或mvp。 - mpm
受人尊敬,绝对是mvvm。 Backbone也被认为不是真正的MVC,而是'在MV *家族中',哪个淘汰赛也可以被认为是在内 - danwellman