javascript - 与自己编写 JavaScript 相比,jQuery 有哪些优势?

标签 javascript jquery

<分区>

Possible Duplicate:
When should I use a javascript framework library?

全部,

我对网络应用程序开发还很陌生。

最近,我构建了一些专门针对 iPad 和 iPhone 的 HTML5 应用。

我注意到似乎很少有人直接使用 JavaScript - 几乎每个人都使用 jQuery(Prototype、YUI、Mootools 等似乎不太受欢迎)。

如果我刚开始——我应该使用 jQuery 吗?或者,我自己编写 JavaScript 会更好吗?

总的来说——我更喜欢尽可能多地使用“我自己的”代码。如果可以避免使用框架,我会感到不舒服 - 我觉得它让我无法理解“引擎盖下”发生的事情。

(当然——即使我直接使用 JavaScript——“幕后”有很多层次(例如,浏览器的 JavaScript 引擎、操作系统、内核等),我不明白,但较低的层次我确实理解的水平越好。)

我能想到的唯一具体优势是不使用 jQuery...加载整个 jQuery 框架,当我只需要它的少数功能时 - 似乎没有必要和浪费。

所以 - 一般来说 - 我是否最好为每个项目创建我自己的、高度定制的、特定于应用程序的 JavaScript?

或者——我是否应该硬着头皮,克服使用别人代码的不情愿,转而使用 jQuery?除了不必创建我自己的已经由其他人编写的函数版本之外,它还有其他优势吗?

例如,它的功能是否以某种方式优化或比我自己生产的更高效?

[更新]

到目前为止,答案中的一个共同主题......jQuery 消除了担心浏览器差异的需要。好点。

就我而言,我正在专门为 iPhone、iPad 和 Android 编写应用程序。据我所知-浏览器非常一致。 IE6、7、8 的变幻莫测和特质似乎真的不适用。真的吗?如果是,是否消除了使用 jQuery 的一个主要原因?

另一个关键问题... jQuery 如此流行,它很可能已经在用户的缓存中,因此无需加载它。是的……但这是唯一的性能损失吗?换句话说……作为 jQuery 一部分的数百个函数的存在是否会影响我的页面的性能? (我不知道 JavaScript 引擎是如何工作的,所以我不知道是否是这种情况...)。

非常感谢您的建议和指导。

最佳答案

我理解你。很长一段时间我都有同样的想法。然而,在这个特定的例子中,有充分的理由说明为什么有这么多人使用框架(jQuery 是当今最流行的)。原因是,不关心浏览器差异 + 一个很好的方法和函数工具包。

但第一件事(浏览器差异)更为重要。如果您打算自己编写所有内容,那么您只需要为所有那些浏览器和版本关心那么多事情,这真是令人作呕。所以一些聪明的人想出了这个主意,为什么不创建一个抽象所有这些差异的库,我们几乎可以在任何浏览器平台上使用相同的方法集。 Boohja,这就是 Javascript 库的诞生方式。

你提到的另一点:loading the ENTIRE jQuery framework (...)

好吧,正如您也正确提到的那样,jQuery 是如此流行以至于用户很可能已经在他的浏览器中缓存了一个 jQuery 版本。因此,首先尝试从像 Google 这样的通用 CDN 加载像 jQuery 这样的库总是一个好主意。浏览器甚至不需要下载它的可能性非常大。

现在我不想争论代码质量和类似的东西。但是 jQuery 是一个非常可靠的库。它提供了一个非常好的浏览器抽象以及一个方便的语法(jAndys 意见)。但是还有很多其他非常好的图书馆。一般来说,我总是建议使用一个,尤其是对于大型网络应用程序。

在某些时候,您无论如何都会开始编写自己的方法来自行抽象浏览器差异和行为,因为每次都编写这么多代码实在是太烦人了。因此无需在这里发明轮子(可能仅用于学习目的)。

关于javascript - 与自己编写 JavaScript 相比,jQuery 有哪些优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6844816/

相关文章:

php - 如何获取js文件中的路由路径

javascript - 需要帮助理解 JS 和 jQuery 变量的引用

Javascript 文档生成

javascript - 每个点的 Chart.js 自定义图像

javascript - 您如何设计或覆盖下拉菜单的默认悬停颜色?

javascript - JQueries Live 在 IE8 中工作吗?

javascript - 为什么在更改文本字段时未立即启用提交按钮?

javascript - 在一页上 Bootstrap 多个轮播

javascript - Rxjs : understanding expand operator

jquery - 在不重新加载页面的情况下更新浏览器的 URL