5

编辑:为了清楚起见,我不是在质疑 jQuery 的厉害之处。我到处都用它。我只是不明白使用小部件相对于利用 jQuery 功能的常规 js 对象的优势。

我最近不得不在我正在开发的应用程序中使用一些 jQuery 小部件,我发现它们非常不直观/丑陋。似乎有很多约定要学习,它们并没有真正增加任何价值,而且语法不适应智能感知或轻松重构。

不要误会我的意思,我经常使用 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');
}
4

3 回答 3

1

为了补充 Thinking Sites 的观点,使用 jQuery 小部件还提供了其他类似 OO 的功能(无需投资构建以纯 js 支持它所需的基础设施)

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

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

它为构建具有一致 API 的复杂、有状态的插件提供了一个灵活的基础。它不仅适用于作为 jQuery UI 一部分的插件,而且适用于希望创建面向对象组件而不重新发明通用基础架构的开发人员的一般使用。-- http://wiki.jqueryui.com/w/page/12138135/Widget%20factory

于 2013-03-21T19:30:33.063 回答
1

最重要的是 jQuery 小部件有助于为您的应用程序带来结构,如果没有它们,将很难维护。当然,它们还提供了很多有用的事件,例如.bind(),这些事件有时非常有用。经过一番谷歌搜索,我发现这篇关于 jQuery 小部件的文章更详细地介绍了它们的优点。

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


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

...它提供了在小部件结构之外很难维护的代码组织级别。它将代码从命令式(“执行此操作,然后执行其他操作,然后绑定到单击”)更改为声明式(“像扩展操作一样”)。这使您可以自由定义“扩展事物”的含义,而不会弄乱或更改应用程序的外层。不再有数百行长的 $(document).ready() 块。

于 2012-05-11T17:35:33.227 回答
0
  1. 代码组织和结构
  2. 命名空间
  3. 遗产
  4. 适当的范围界定和关闭
  5. 跨开发者可读性和通用架构
  6. 用于访问常用项目的预定义属性
于 2012-05-11T19:05:32.227 回答