14

我想知道依赖 jQuery 或MooTools之类的框架是否是个好主意,还是我们应该只使用纯 JavaScript?

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

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

在选择框架或其他方面时,是否还有其他需要考虑的要点?

4

6 回答 6

39
  1. 框架解决了跨浏览器的错误,这通常会花费您数小时的时间,因此您可以专注于功能而不是担心一些边缘案例浏览器错误..而不是浪费 4-5 小时解决错误与家人一起度过。

  2. 诸如 jQuery 之类的框架已经很好地加载了动画、选择器、html 操作等内容,因此库中通常已经内置了某种功能,这再次为您节省了更多时间,并且 API 使实际完成复杂的事情变得非常容易。

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

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

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

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

不过,在 jQuery 中要记住的一件重要事情是记住您仍在使用 Javascript 进行编码。通常人们会过于沉迷于糖衣方法并将所有内容都包裹在.$this.href$(this).attr('href')

于 2010-08-03T06:00:13.153 回答
8

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

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

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

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

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

于 2010-08-03T05:58:17.507 回答
1

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

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

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

于 2010-08-03T06:02:05.607 回答
1

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

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

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

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

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

于 2010-08-03T06:03:18.570 回答
1

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

于 2010-08-03T06:04:03.077 回答
1

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

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

于 2010-08-03T06:05:36.323 回答