【问题标题】:Why build Javascript functions as jQuery plugins?为什么要将 Javascript 函数构建为 jQuery 插件?
【发布时间】:2010-06-11 17:29:17
【问题描述】:

我见过很多现有 JavaScript 函数的 jQuery 实现,它们只是将 JavaScript 代码包装在 jQuery 包装器中,实际上并不依赖任何 jQuery 的基础来进行操作。

使用 Javascript 作为 jQuery 插件有什么好处?
如果没有的话,使用一个也可以在包装器之外轻松实现的 jQuery 插件会不会有速度损失?

提前非常感谢(只是想在这里学习一些东西)。

更新示例:
http://plugins.jquery.com/project/base64
原来是
http://www.webtoolkit.info/javascript-base64.html

【问题讨论】:

标签: javascript jquery jquery-plugins


【解决方案1】:

大部分 jQuery 只是对现有 JavaScript 函数的巧妙包装。 $('#some-element') 可能比 document.getElementById('some-element') 更容易输入,但在其他方面并没有太大区别。

(我夸大了,但只是有点夸张。)

jQuery 的主要用途是能够将其各种组件组合在一起。例如,如果我可以使用 jQuery 选择器选择元素,然后直接通过 jQuery 函数对这些元素执行一些操作,那比必须提取底层 DOM 元素并手动操作它们更好。

所以这真的取决于你看到的函数被包装了。其中一些很可能不会增加任何价值,而作者只是习惯了 jQuery 中的所有内容。 (我们肯定会在 StackOverflow 上看到这种现象——那些仅仅因为它不在 jQuery 文档中而找不到标准 JavaScript 函数的人)。在其他情况下,即使包装器几乎没有修改底层函数的行为,也可能有一些隐藏的好处。

【讨论】:

  • 使用像 jQuery 这样的库的主要好处之一是它可以处理浏览器检测,并抽象出诸如选择/操作元素之类的东西。这对于 ajax 和 CSS 之类的东西来说是一个巨大的好处。比如你调用$(selector).css('opacity', 0.5),就可以了,不用担心为IE设置过滤规则。
  • @Harold1983,“处理浏览器检测”,在哪里? ... jQuery 都是特征检测/推理。
  • 他的意思可能是在内部,它足够智能,可以在所有浏览器上工作。
【解决方案2】:

围绕 jQuery 也有很大的推动力和普遍的信任。在您的代码库中包含任意 javascript 可能不像包含一个新的 jQuery 插件那样被更高级别的类型“接受”。

所以这可能是一种错误的看法,但作为一个 jQuery 插件,库通过与高质量代码相关联而受益。

【讨论】:

  • 我投票赞成你的答案,因为这是真的,但同时,哦,太难过了:(
【解决方案3】:

恕我直言,创建插件的唯一原因是针对选择器执行某些功能,即一组选定的元素,例如

$('.myelements').someFunction();

如果您的插件最终看起来像这样(例如新发布的 Microsoft 全球化插件)

$.doSomeStuff();

那么使用闭包并没有太多的好处。然而很多开发者并不理解 javascript 中的闭包和命名空间,并且通过遵循插件开发模板他们可以在不完全理解模式的情况下获得好处。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-07
    • 1970-01-01
    • 2011-07-28
    • 2011-11-28
    相关资源
    最近更新 更多