普通的 JavaScript 是不是比使用 jQuery 或 MooTools 等框架更好? [关闭]

Posted

技术标签:

【中文标题】普通的 JavaScript 是不是比使用 jQuery 或 MooTools 等框架更好? [关闭]【英文标题】:Is plain vanilla JavaScript better than using frameworks like jQuery or MooTools? [closed]普通的 JavaScript 是否比使用 jQuery 或 MooTools 等框架更好? [关闭] 【发布时间】:2011-03-24 13:28:18 【问题描述】:

我想知道依赖像 jQuery 或 MooTools 这样的框架是否是个好主意,或者我们应该只使用纯 javascript

除了避免***的重新发明之外,它们是否增加了任何特定的价值?

由于框架对公众开放,是否有可能利用框架中可能出现的任何安全漏洞(当然,是无意的:))?

在选择框架或其他方面是否需要考虑其他要点?

【问题讨论】:

jQuery vs. javascript? 和 Does using a framework prevent me from mastering JavaScript? 的可能重复项 分别获得 12 票和 38 票支持的问题和已接受的答案怎么可能没有建设性?让我们面对现实吧,SO 的版主是巨魔。这就是我完全停止回答问题的原因。 【参考方案1】:

    框架解决了跨浏览器错误,这通常会花费您数小时的时间,因此您可以专注于功能而不用担心一些边缘情况的浏览器错误。而不是浪费 4-5 小时来解决一个错误与家人共度时光。

    1234563复杂的事情。

    解释器和浏览器的速度越来越快,所以我不认为加载整个库是个大问题。此外,多亏了 Google 等,我们获得了非常快的 cdns,现在许多站点都使用相同的确切 URI 来拉入脚本,这意味着脚本在另一个站点上被缓存和重用的比率更高。

    与其让每个 Web 开发人员都拥有自己的库,不如让成千上万的人集中精力改进少数几个库以便记录和修复跨浏览器的错误,这样效率更高。

    竞争是一件好事,slickspeed 测试的结果产生了更快的选择器引擎,例如 Sizzle。开发人员不必担心微不足道的 DOM 错误,这意味着每天都会创建更复杂的库,这意味着入门级开发人员可以使用非常强大的插件。

就安全性而言,例如,jQuery 将检测浏览器是否能够原生解析 JSON,如果可以,则依赖它。通常任何现代浏览器都会有这个,而且它比eval 安全得多...所以jQuery 努力首先使用更安全和更安全的方法。如果没有可用的 JSON.parse 方法,它将使用 eval。

在 jQuery 中要记住的重要一点是要记住您仍在使用 Javascript 进行编码。通常人们太沉迷于糖衣方法并将一切包装在$中,我认为重要的是要知道你仍然可以使用this.href而不是$(this).attr('href'),如果你想要一个绝对例如,标准化的 uri。

【讨论】:

哇!感谢这次精彩的综述!【参考方案2】:

不要低估避免重新发明***的重要性。每次你想编写一个新程序时,你都不会发明一台新计算机。

但除此之外,JavaScript 库提供了更好的跨浏览器支持。这非常有帮助,快速浏览一下QuirksMode 就会发现。

JavaScript 框架使许多事情变得更容易。查看 jQuery 文档,您会发现它是多么容易做许多花哨的事情。

JavaScript 框架已被许多人扩展,因此有许多高质量的 jQuery 插件(例如 — 这是我最了解的框架),您无需自己编写即可使用它们。

JavaScript 框架不太可能引入安全漏洞,因为它们不会暴露出比普通 JavaScript 所能做的更多的功能。

【讨论】:

我同意你关于“重新发明***”的观点。我知道处理跨浏览器问题有多么困难。【参考方案3】:

这些框架为 JavaScript 提供了一个跨浏览器的 API,因此大多数时候它们非常有用,尽管它们会带来一点速度损失。但是 JS 引擎几乎每次更新都很快,所以这不是一个真正的问题。 框架也有很多插件,因此它们不仅提供 API,还提供新的跨浏览器功能。 但这取决于你想做什么。

【讨论】:

【参考方案4】:

我不太重视“开源对安全问题特别脆弱”的论点。我看到许多好人阅读代码并发现此类问题的好处。如果这是一个问题,那么我们需要放弃 Linux、Apache、mysql 和大多数 Java 库。

框架通常会节省大量的精力,我将它们准确地视为一个预先发明的***。他们不需要任何其他值。

【讨论】:

【参考方案5】:

这取决于您使用 JavaScript 的目的。如果您希望能够显示和隐藏面板、动画内容、将事件附加到多个元素、执行 Ajax 等,那么您需要考虑 cross-browser 问题。

jQuery 消除了考虑跨浏览器问题的需要,并提供了一些非常简洁的功能,如上述以及模式对话框等。

所以这取决于你想从 JavaScript 中得到什么。

【讨论】:

【参考方案6】:

我从未使用过 MooTools,因此无法对此发表评论,但 jQuery 让很多事情变得更容易。

按类、名称​​、部分 Id 等选择对象集合。 简化 Ajax 调用。 Wireup 事件处理程序,用于处理 onclick、mouseover、mouseout 等,并根据通用选择器分配给元素,以便可以重用逻辑。 大量的过渡和其他视觉内容让前端更加美观。

还有很多,但通常可以简化/加速开发。需要注意的一件事是,如果您在单个函数中使用大量选择器(循环遍历 DOM 40 多次),那么使用原生 JavaScript 会更有效。

所以我的建议是在框架的帮助下编写前端代码,然后通过嵌入原生 JavaScript 来优化性能不佳的部分。

另外,我看不出 jQuery 或 MooTools 是如何构成安全威胁的,因为它们是客户端框架,而不是服务器端。除了任何客户端验证之外,请记住始终在服务器端验证输入,并正确参数化在服务器端构造的 SQL 查询。

【讨论】:

在纯 JS 中处理 DOM 有时真的很痛苦,但正如您所说,它有其自身的优点 .. 我更喜欢使用纯 JS 尽可能避免不必要的 DOM 循环 .. 谢谢回答:)

以上是关于普通的 JavaScript 是不是比使用 jQuery 或 MooTools 等框架更好? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

使用 javascript 检测 MP4 视频是不是有音轨

当用户完成输入而不是按键时运行javascript函数?

在搜索普通查询而不是全文搜索的情况下,Solr是否比普通的RDBMS更好?

如何在普通 javascript 文件中使用 mixins(不是单个文件模板)

为啥 HTTP/2 比普通 HTTPS 慢?

dart2js 代码如何比 javascript 更快?