jQuery Widget优于常规JS对象的优点?

时间:2012-05-11 17:24:04

标签: javascript jquery jquery-ui widget

编辑:为了清楚起见,我不是在质疑jQuery的精彩之处。我到处都用它。我只是不明白使用Widgets而不是利用jQuery功能的常规js对象的优势。

我最近不得不在我正在使用的应用程序中使用一些jQuery Widgets,我发现它们非常不直观/丑陋。似乎有很多习惯要学习哪些并没有真正添加任何值,语法不适用于智能感知或简单重构。

不要误会我的意思,我经常使用jQuery而且我讨厌没有它的生活,只是没有看到小部件约定中的值。我确信我错过了这一点,因为它们非常普遍,所以请告诉我。为什么人们创建jQuery小部件而不是常规的js对象?

过度简化示例:

常规Javascript对象:     

//instantiate & render
var foo = new MyDomain.MyObject('#mySpecialInput', options)
foo.render();

//assign to property
foo.value = 5;
//call method
foo.multiplyBy(2);
//bind event
foo.change(function(){
    alert('it changed');
}

Jquery小部件:     

//instantiate & render
var $foo = $('#mySpecialInput');
$foo.myWidget(options);

//assign to property
$foo.myWidget('option', 'value', 5);
//call method
$foo.myWidget('multiplyBy', 2);
//bind event
$foo.bind('myWidgetChange', function(){
    alert('it changed');
}

3 个答案:

答案 0 :(得分:1)

最重要的是jQuery小部件有助于为您的应用程序带来结构,如果没有它们将非常难以维护。当然,它们还提供了许多有用的事件,例如.bind(),这些事件有时非常有用。经过一段谷歌搜索后,我在jQuery小部件上找到了this article,详细介绍了它们的优点。

就个人而言,我更喜欢手动构建我的脚本(更多),但如果你不喜欢这样做,jQuery小部件可以提供帮助。


详细说明jQuery小部件如何添加结构的相关引用:

  

...它提供了很难的代码组织级别   维护小部件结构之外。它改变了代码   势在必行(“做到这一点,那么,然后另一件事,绑定到   点击“)进行声明(”表现得像一个膨胀的东西“)。这让你松了一口气   最多定义什么是“expando thing”的意思,而不是杂乱或   更改应用的外层。没有多百线长   $(document).ready()块。

答案 1 :(得分:1)

要添加到Thinking Sites的观点,使用jQuery小部件还提供其他类似于OO的功能(无需投资构建在普通js中支持它所需的基础结构)

- 可扩展性 - 就地继承 - 允许从自身延伸。这允许模块化和高度可维护的代码 - 公共和私有方法的概念,以提高代码的可读性,最好的部分是它维护链接,因为它返回jQuery对象
- 有许多预定义的方法来管理小部件的生命周期:创建,初始化和销毁​​

jQuery小部件框架可以被视为模仿OO功能的工具。

  

它为构建复杂的有状态插件提供了灵活的基础   使用一致的API。它不仅适用于插件   jQuery UI的一部分,但是对于想要的开发人员的一般消费   创建面向对象的组件而不重新发明常见的组件   基础设施。 - http://wiki.jqueryui.com/w/page/12138135/Widget%20factory

答案 2 :(得分:0)

  1. 代码组织和结构
  2. 命名空间
  3. 继承
  4. 适当的范围和关闭
  5. 跨开发人员可读性和通用架构
  6. 用于访问常用项目的预定义属性