问题 为什么要将Javascript函数构建为jQuery插件?


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

使用Javascript作为jQuery插件有什么好处?
如果没有,那么使用jQuery插件会有速度损失,这个插件很容易在包装器之外实现吗?

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

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


10602
2018-06-11 17:29


起源

你有一个你所指的例子吗? - Matthew J Morrison
例如,请...(答案可能是:“允许调用链接/流畅界面”) - Shog9♦
例如喜欢 plugins.jquery.com/files/jquery.cookie.js.txt 要么 code.google.com/p/jquery-json/source/browse/trunk/... 要么 stackoverflow.com/questions/3024084/...? - Crescent Fresh
@ Shog9 - 别忘了清洁。 - Gert Grenander
plugins.jquery.com/project/base64 这是 webtoolkit.info/javascript-base64.html - Mohammad


答案:


很多jQuery只是围绕现有JavaScript函数的巧妙包装器。 $('#some-element') 或许比打字更容易 document.getElementById('some-element') 但除此之外没什么不同。

(我夸张,但只是略微。)

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

所以它真的取决于你所看到的功能。其中一些可能很好地添加没有价值,作者只是习惯于jQuery中的所有东西。 (我们肯定会在StackOverflow上看到这种现象 - 那些无法找到标准JavaScript函数的人只是因为它不在jQuery文档中)。在其他情况下,即使包装器在修改底层函数的行为方面做的很少,也可能存在一些隐藏的好处。


8
2018-06-11 17:35



使用像jQuery这样的库的主要好处之一还在于它处理浏览器检测,并抽象出选择/操作元素等内容。对于像ajax和CSS这样的东西来说,这是一个巨大的好处。例如,如果你调用$(selector).css('opacity',0.5),它只是工作,你不必担心为IE设置过滤规则。 - Harold1983-
@ Harold1983,“处理浏览器检测”,在哪里? ... jQuery是所有功能检测/推理。 - James
他可能在内部表示,它足够智能,可以在所有浏览器中工作。 - Mohammad


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

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


4
2018-06-11 17:55



我把你的答案投票了,因为这是真的,但与此同时,哦,太伤心了:( - SBUJOLD


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

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

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

$.doSomeStuff();

然后使用闭包无法获得很多好处。然而,许多开发人员都不了解javascript中的闭包和命名空间,并且通过遵循插件开发模板,他们可以在不完全理解模式的情况下获得好处。


1
2018-06-11 18:25