2

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

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

我的主要研究领域是:

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

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

希望这个问题的描述足够清晰和狭窄,以便为所有 JavaScript 编码人员在这个非常具体的设计问题上获得一些有用的答案。

4

1 回答 1

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 插件设计模式的良好指南——一些旨在优化性能,另一些用于互操作性/链接、可变性等。


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])

(全部从 Kristian Abrahamsen GitHub Repo借来)

并且存在用于字符串、Cookie 等的插件并且可以/应该考虑


JQuery插件的缺点:

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

如果不想重复使用,就不要创建插件。我敢肯定,您团队中的很多开发人员都太有创意了。

计划是必须的!请参阅此 Brolick 博客开发插件指南

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

于 2014-08-19T05:21:52.920 回答