为什么每个javascript问题的答案最终都是"jQuery"

Cha*_*son 15 javascript jquery

在过去的几周里,我一直在关注这里的javascript问题,我发现了一个常见的反复出现的主题.

几乎所有涉及JavaScript的问题都得到了回答:

  1. "jQuery可以做到这一点"
  2. "那里有一个插件"
  3. "jQuery可以为你铺床."

甚至引用其他库的问题也可以通过"使用jQuery代替"来回答.

jQuery是否取代了JavaScript作为一个整体?
这是一个严重的问题.我们真的在关注JavaScripts的未来吗?显然,这个社区对jQuery有很强的偏见(因为有很多.NET开发人员?),但是整个Web开发社区是否共享这种偏见?

Fel*_*ing 22

不,jQuery不会取代JavaScript,因为它 JavaScript.但它对你有很大的帮助,特别是在选择元素和在元素上应用函数时.

使用jQuery可能是最重要的论点:您不必考虑跨浏览器兼容性.
说真的,浏览器中的不同JavaScript实现让我发疯.

但我也不认为jQuery应该用于所有事情.这取决于地方(例如,其浏览器)使用JavaScript和什么你怎么做.

正如我已经在其他问题上回答的那样,如果你理解JavaScript,你只能掌握jQuery.如果您不理解它的工作方式,那么编写错误的jQuery代码非常容易.

更新:

事实上,在现代浏览器中,您已经可以使用通常使用jQuery的东西,例如使用选择器,或者each()本地使用JavaScript,使用document.querySelectorAll()数组方法forEach().
但这就是问题:在现代浏览器中.jQuery确保您可以使用相同的API,而不必关心浏览器版本.

  • 实际上,如果Javascript从一开始就经过重新设计,它看起来就像jQuery,而不是Javascript (17认同)
  • 其他jQuery(跨浏览器)的好处:可靠的选择器,可靠的事件处理程序,可靠的AJAX,强大的插件架构,有用的实用程序功能. (6认同)
  • 究竟.如果你对那些期望在所有浏览器和浏览器版本中顺利进行的客户感到很沮丧......在没有框架的情况下这样做很好,但你有所有这些条件来检查差异浏览器和版本并执行略有不同相应的代码.很快你就把它全部扔进了一个函数,你自己的"库",因为你发现自己一遍又一遍地做同样的事情.这大约是jQuery的一半.另一半是让你的生活更轻松,只要将javascript应用于事物.需要将事件监听器应用于页面上的所有链接吗? (3认同)
  • (续)......或者只是某个区域内的链接?手动完成所有操作,或写出循环和getElementByTag/ID /等等,这是耗时且令人沮丧的.然后必须使其跨浏览器兼容才能启动.TBH我的经验是,大多数回避jQuery这样的框架的人通常都没有一般的javascript经验.只是在说'... (3认同)

War*_*rty 19

我对jQuery有偏见.这是我唯一被忽略的标签:)...

在我看来,人们不适合发布其他问题,说"我可以危险jQuery吗?" 但是,当另一个人进入"普通"JavaScript时.

我相信每个人都应该在进入jQuery之前学习"简单的"javascript + dom操作,有点像你学习c ++时不应该直接跳到DirectX; 没有JavaScript专有技术,你无法使用jQuery ...

但最后,你应该使用你觉得更舒服的东西.

但说实话,我相信如果你也熟练掌握JavaScript,你会有更多的机会,让我们说jQuery有一天会消失......你对JavaScript本身的体验仍然存在.

  • `我相信每个人都应该在进入jQuery之前学习"普通的"javascript + dom操作.引用真相! (9认同)
  • `$( 'I ')(' 可以:有(jQueries)').延迟(NONE !!!)`. (6认同)
  • 如果问题没有提到jQuery,我会经常提供一个不使用jQuery的答案.如果它的操作通过jQuery变得更容易,我也将提供该代码作为参考. (5认同)

Anu*_*rag 3

我认为 jQuery 无法取代 JavaScript 有一个非常明显的原因。这是因为 jQuery 没有解决JavaScript(语言)中的任何一个问题。它只解决浏览器之间DOM实现不一致的问题,这是它最大的优势,并且它附带了一些语法糖。

jQuery 无法取代 DOM API 还有另一个明显的原因。jQuery - 库,由一个组织和主要由一个人控制。另一方面,DOM 是由大量供应商实现的规范,而 jQuery 只是该规范的各种实现的包装器。

如果 jQuery 要取代这些DOM API,那么它必须是一个规范,因为不同的浏览器供应商不能只是获取其代码并将其推到某个地方并使一切正常工作。浏览器引擎可能采用 C、C++、Java 或 GolfScript 语言,因此绝对有必要将其作为规范而不是实现。

一旦 jQuery API 成为事实上的标准并在规范中列出,它将面临与规范现在面临的相同问题。您不能只是一个一夜之间解决问题并发布新版本(例如规范 1.4.3)的核心提交者。该规范已经被讨论、商定、更改、发布,所有实现者都必须更新其代码库以遵守,这使得整个过程变慢。它还失去了修复跨浏览器怪癖的能力,因为它无法控制这一点,因为它在食物链的更高级别上运行。

然后,由于它是一个规范并且进展缓慢,您始终可以提出自己的库,*Query进一步简化规范 API,修复跨浏览器问题,并以更快的速度进展。

这就是为什么 jQuery 无法取代 DOM API,因为如果它取代了,随着更好、更具创新性和竞争性的抽象每天都会涌现,它很快就会停滞不前。