jQuery在哪里适合JavaScriptMVC,BackboneJS,SproutCore和Knockout等框架?


14

在过去的两年中,我一直很愉快地使用JQuery,并且一直非常成功地使用它创建了一些非常酷的功能...所以我对此非常满意。我还相信,网络的未来将继续沿用当前的客户端路径。

然而...

下一个挑战似乎是以各种控制器框架的形式出现的:KnockoutJSBackboneJSSproutCoreJavaScriptMVC(清单不胜枚举)。

Additonally,有一些伟大的AMD装载机工具,像使用RequireJSLabJS等。但是,jQuery的现在已经definethen能力烤项。

跟踪所有信息变得越来越难了...

现在,我的任务似乎是评估/确定使用某种形式的MVC或MVVM框架客户端的战略方向...但是我有很多问题。

  • JQuery 在哪里适合上述各种控制器框架?
  • 是将JQuery 每个对象一起使用,还是其中一些包含自己的“ JQuery风格的版本”?
  • 如果实现上述各种控制器框架之一,是否仍需要诸如RequireJS之类的 工具?
  • 现在,加入JQuerydefinethen功能是否可以取代上面提到的AMD Loader?
  • 哪一个看起来最模块化?(请参阅下面的注释)

注意:
在任何将来的框架中,我都不需要的一件事是必须接受大量我不使用的功能。意思是说,我宁愿使用真正模块化的框架。例如,要使用jQuery UI,您必须引入许多您可能未实际使用的其他核心库。

我将对每一个进行实验,但是一些真实的反馈会很棒。我已经看到了一些“类似”的问题,但是没有一个人能够真正回答上述问题。

提前致谢!

Answers:


11

jQuery是跨浏览器标准化工具。它给你以下

  • DOM实用程序
  • 活动系统
  • 阿贾克斯
  • 动画制作
  • ES5实用程序
  • 其他的东西

Backbone / knockout / yada / yada是类似于MVC的库,可以帮助您构建和编写模块化应用程序。仅在需要它们的结构时才需要这些。

RequireJS / yada / yada是模块加载器。如果要编写模块化应用程序,则需要某种形式的模块加载器。

JQuery在哪里适合上述各种控制器框架?

如前所述,jQuery规范了浏览器。控制器框架没有。您不需要jQuery,但需要某种方式来标准化浏览器。

是将JQuery与每个对象一起使用,还是其中一些包含自己的“ JQuery风格的版本”?

骨干/剔除/ JavaScriptMVC没有内置浏览器规范,因此您需要一个工具。我不确定SproutCore似乎有很多东西。

如果您实现上述各种控制器框架之一,是否仍需要诸如RequireJS之类的工具?

仅当您编写编写模块化应用程序时才需要这些。太好了。

模块化应用程序分为三种

  • 异步需求加载器,例如requireJS
  • 同步需要像modul8这样的加载器
  • 使用名称空间,仅包含文件
  • ender这样的软件包

现在,内置到JQuery中的定义和功能是否可以取代上面提到的AMD Loader?

不需要。jQuery内置的define功能允许您将其与AMD加载器一起使用,而无需包装jQuery。您仍然需要AMD加载程序。“然后”功能只是jQuery延迟的一部分。

哪一个看起来最模块化?(请参阅下面的注释)

这是一个自以为是的问题。我个人的观点是,所有这些包括jQuery的框架都是肿的,而不是模块化的。

您需要模块化,编写自己的库,编写自己的体系结构。

但是,如果您想减少邪恶,我会选择骨干,因为它既简单又小,或者脊椎很相似


谢谢雷诺斯...我总能指望你给我一个很好的答案!
囚犯零

@Marjan我正在等待可能也愿意提交任何输入的任何其他人。
囚犯零

@PrisonerZERO:完全没有问题。当您似乎对Raynos的回答感到满意时,我的评论是为了防止您不知道接受答案(我没有检查您的个人资料,并且您的代表建议您是此处的新用户)
Marjan Venema

2

作为贡献者,我将在JavaScriptMVC上进行回答:

JQuery在哪里适合上述各种控制器框架?

JavaScriptMVC依赖于jQuery,并广泛使用它。

是将JQuery与每个对象一起使用,还是其中一些包含自己的“ JQuery风格的版本”?

JavaScriptMVC没有与jQuery竞争的功能。对于拥有自己的事件系统的Backbone而言,情况并非如此。但是,任何骨干或脊椎骨的添加都非常少。

如果您实现上述各种控制器框架之一,是否仍需要诸如RequireJS之类的工具?

JavaScriptMVC带有依赖性管理系统->窃取。您可以将JavaScriptMVC与RequireJS结合使用,但是窃取实际上要强大得多,并且用户下载的大小差不多。

哪一个看起来最模块化?(请参阅下面的注释)

这是没有根据的。JavaScriptMVC是非常模块化的。您只使用所需的东西。与Backbone或Spine相比,您可以单独使用M,V或C部件。组装在一起时,它仅比Backbone大1k(使用jQuery和Underscore时)。您可以在此处查看基本组件的各种大小:https : //github.com/jupiterjs/javascriptmvc/issues/26

但是JavaScriptMVC(在功能方面)比Backbone或Spine更强大。例如,它的模板化事件处理程序实际上可以防止所有内存泄漏。这是一个工具提示,当单击窗口时会隐藏自身:

$.Controller('Tooltip',{
  "{window} click" : function(){
    this.element.remove();
  }
})

当您的控件正在侦听模型中的更改时,这对于MVC方法绝对至关重要:

$.Controller('Todos',{
  "{Todo} created" : function(Todo, ev, createdTodo){

  }
})

控制器将自动解除所有这些外部事件处理程序的绑定。

MVC部分的其他一些优点:

  • $ .Class是一个非常强大的类系统
  • $ .View和$ .Model支持延期
  • $ .Controller可以“重新绑定”事件处理程序
  • $ .Model支持关联,getter / setter,默认值,验证

现在,JavaScriptMVC不仅仅是MVC的一部分(它们是jQueryMX子项目的一部分)。它具有:

  • jQueryMX-jQuery缺少的功能,例如特殊事件,dom帮助器等。
  • 偷-依赖管理系统。但是它可以做一些事情,例如使用ajax应用程序并使它可Google抓取。
  • FuncUnit-一个非常强大的测试框架。

现在,取决于使用什么,这在很大程度上取决于。在很大程度上取决于您是制作“应用程序”还是制作“页面”。一个需要测试,依赖管理的应用程序,其中您关心内存泄漏,我将研究JMVC或SproutCore。

如果您将一些基本的小部件粘合在一起,那么我将研究脊椎或骨干。


“骨干或脊椎,您可以单独使用它的M,V或C部件。” 除了每个M,V和C都和骨干和脊椎一样大。
雷诺斯2011年

这不是真的。骨干是5k,具有下划线依赖性。我不确定是什么脊椎。但是这里是细目分类:类:1k,控制器:1.74k,型号:2.8k,$。视图:1.6k,$ .String:.5k。总计为8.6k。这样多了3k,但还有更多有用的功能。
贾斯汀·迈尔

您是否将JavaScriptMVC与Kendo UI控件一起使用?还有哪些其他控件?
囚犯零

是的,任何基于jQuery的UI库都可以正常工作(只要它使用jQuery的事件系统进行事件)。
贾斯汀·迈尔

我应该注意,Backbone可以使用Zepato而不是jQuery,这使其与结合使用jQuery的JMVC MVC依赖关系相比要少得多。但是,如果没有jQuery,您将损失很多。
贾斯汀·迈尔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.