我什么时候应该将我的代码编写为jQuery插件

时间:2013-04-12 09:10:25

标签: javascript jquery jquery-plugins

假设没有其他类似的框架,并忽略了jQuery依赖性和潜在性能开销的潜在缺陷。

我想知道何时应该将一组有凝聚力的JavaScript函数编码为jQuery插件。当然,涉及到很多主观性和上下文 - 也许应该描述一个关于沿着jQuery路径走下去的最重要情况的目录。

我的主要研究领域是:

  • 与简单的JavaScript对象相比,jQuery插件结构的好处
  • 插件最有利于“链接”并在DOM级别上运行。也就是说,jQuery插件应该专注于DOM操作吗?
  • 也许所有JavaScript编码方案都受益于结构化代码?正确封装'this'

我希望JavaScript代码是:   - 标准 - 易于阅读/修改   - 更可预测   - 最小的错误(让我们忽略IDE和CoffeeScript和其他技术,但要考虑减少人为错误的好处)

希望这个问题清晰而简洁,以便在这个非常具体的设计问题上为所有JavaScript编码人员提供一些有用的答案。

1 个答案:

答案 0 :(得分:2)

什么是JQuery插件:

JQuery插件 JavaScript 等效的扩展方法。我们来看一下插件语法:

$.fn.stretch = function(multiple) {
    this.each(function() {
        var $t = $(this);
        $t.height($t.height * multiple);
        $t.width($t.width * multiple);

    });
    return this;
};

我创建了一个插件,它将传递的倍数所选元素的高度和宽度相乘。 (请注意,为了演示目的,这一起被拍了一下)。

$('#smallDiv').stretch(2);

该方法在$(this)上运行,它附加到的对象,并返回一个对象,允许进一步

以下是一系列 JQuery Plugin Design Patterns 的良好指南 - 一些用于优化性能,另一些用于互操作性/链接,可变性等。


JQuery插件的好处:

1)链接

$('#smallDiv').css("background-color", "beige").stretch(2);

2)重新使用

我承认这是一个强迫的例子,但仍然......

$('#smallDiv').stretch(2).stretch(1.5);

3)范围的模块化

我们的插件中的代码无需担心变量范围。它只使用局部变量完全自包含。

4)可读性

我在此假设您的插件已正确命名为


DOM或DOM:

插件在很多方面都很有用

我怀疑90%的插件用于DOM操作。链接是一个很大的优势。

但是 JQuery 已经有很多数组扩展方法:

$.distinct([1, 2, 2, 3])
$.union([1, 2, 2, 3], [2, 3, 4, 5, 5])
$.intersect([1, 2, 2, 3], [2, 3, 4, 5, 5])
$.except([1, 2, 2, 3], [2, 3, 4, 5, 5])

(所有的anove从Kristian Abrahamsen借来GitHub Repo

存在字符串,Cookie等插件,可以/应该考虑


JQuery插件的缺点:

全球并不总是高尚的:您可以在任何事情上使用漂亮的新stretch()插件。是好还是坏?你决定。谁应该使用它?谁不该?应该使用哪些元素?

如果您不想重复使用,请不要创建插件。我确信您团队中的大量开发人员过于富有创造力。

规划是必须的!请参阅此Brolick博客Guide to Developing Plugins

在Brolick指南和模式参考之间,您会注意到由于草率插件开发而导致的许多错误和问题。其中最常见的是性能不佳内存泄漏。两者都被低估了潜在的严重性,并且在插件开发中频繁且频繁。