我想知道依赖jQuery或MooTools这样的框架是否是一个好主意,还是应该使用纯JavaScript?
除了避免重新发明轮子之外,它们是否会增加任何具体价值?
由于框架对公众开放,是否有可能利用框架中可能出现的任何安全漏洞(当然,无意中:))?
在选择框架或其他方面是否还有其他要点?
答案 0 :(得分:39)
框架解决了跨浏览器的错误,通常需要花费数小时的时间,因此您可以专注于功能而不必担心某些边缘案例浏览器错误...而不是浪费4-5个小时来解决错误花费与家人共度时光。
像jQuery这样的框架很容易加载动画,选择器,html操作之类的东西,所以通常会在库中内置一些功能,再次为你节省更多时间,API让它真的很容易实现复杂的事情。
口译员和浏览器变得越来越快,所以我并不特别认为加载整个图书馆是个大问题。此外,多亏了Google等人,我们得到了非常快的cdns,现在很多网站都使用相同的URI来拉入脚本,这意味着脚本在另一个网站上被缓存和重用的速率更高。
不是每个Web开发人员都拥有自己的库,而是让成千上万的人集中精力改善少数几个库,以便跨浏览器的错误得到记录和修复。
竞争是一件好事,光滑测试的结果导致了更快的选择器引擎,如Sizzle。开发人员不必担心琐碎的DOM错误,这意味着每天都会创建更复杂的库,这意味着入门级开发人员可以访问非常强大的插件。
就安全性而言,例如jQuery将检测浏览器是否能够本机解析JSON,如果是,则依赖于此。通常任何现代浏览器都会有这个,它比eval
更安全...所以jQuery首先努力使用更安全,更安全的方法。如果没有可用的JSON.parse方法,它将仅使用eval。
在jQuery中要记住的一件重要事情是记住你仍然在用Javascript编写代码。通常人们会过多地接受糖衣方法并在$
中包装所有,我认为知道你仍然可以this.href
代替$(this).attr('href')
这一点非常重要如果你想要一个绝对标准化的uri例如。
答案 1 :(得分:8)
不要淡化避免重新发明车轮的重要性。每次要编写新程序时都不会创建新计算机。
但除此之外,JavaScript库提供了更好的跨浏览器支持。这非常有用,快速查看QuirksMode将会证明。
JavaScript框架使许多内容更容易。查看jQuery文档,您将看到它是多么容易做许多奇特的事情。
许多人已经扩展了JavaScript框架,因此有许多高质量的jQuery 插件(例如,它是我认识最好的框架),您可以使用它而无需自己编写。JavaScript框架不太可能引入安全漏洞,因为它们不会暴露任何比使用纯JavaScript可以执行的功能。
答案 2 :(得分:1)
这取决于您使用JavaScript的目的。如果您希望能够显示和隐藏面板,动画内容,将事件附加到多个元素,执行Ajax等,那么您需要考虑cross-browser问题。
jQuery消除了考虑跨浏览器问题的需要,并允许一些非常简洁的功能,如上述和模态对话框等。
所以这取决于你想要的JavaScript。
答案 3 :(得分:1)
我从未使用过MooTools因此无法对此发表评论,但jQuery使得很多事情变得更容易。
还有很多,但它通常会简化/加速开发。需要注意的一件事是,如果你在一个函数中使用大量选择器(循环遍历DOM 40多次),那么使用vanilla JavaScript会更有效率。
所以我的建议是在框架的帮助下对前端进行编码,然后通过subing in vanilla JavaScript优化表现不佳的部分。
另外,我没有看到jQuery或MooTools如何成为安全威胁,因为它们是客户端框架,而不是服务器端。除了任何客户端验证之外,请记住始终验证服务器端的输入,并正确参数化在服务器端构建的SQL查询。
答案 4 :(得分:1)
这些框架为JavaScript提供了跨浏览器的API,因此大多数时候它们都非常有用,即使它们有一点速度损失。但JS-Engines几乎每次更新都会快速完成,所以这不是一个真正的问题。 框架也有很多插件,因此它们不仅提供API,还提供新的跨浏览器功能。 但这取决于你想做什么。
答案 5 :(得分:1)
我并没有非常重视“开源是否容易受到安全问题”的争论。我看到许多好人阅读代码并发现此类问题的好处。如果这是一个问题,那么我们需要丢弃Linux,Apache,MySql和大多数Java库。
框架通常可以节省很多精力,我认为它们恰好是预先发明的轮子。他们不需要任何其他价值。