哪个JavaScript框架是最不邪恶的?

4
我不是很喜欢现在流行的JavaScript框架。我认为许多库可以写得更好,有些项目选择它们只是出于偏爱而非理解实际问题的需求,一些JavaScript开发者过度依赖它们,以至于他们成为jQuery或dojo程序员,而不是JavaScript程序员。然而,这只是一个人的观点,事实上,JavaScript框架是生活中的一部分。因此,这里有一个对一个老问题的新看法:哪个JavaScript框架最不邪恶?也就是说,哪个库最贴近最佳实践?考虑到jQuery,它使用浏览器嗅探,并且不使用构造函数中的new关键字。它非常受欢迎,有些人可能会根据某些标准认为它是最好的,但在这些情况下,它忽略了已被接受为最佳实践的内容。
编辑:请不要只说jQuery、YUI或dojo等等。请说明哪一个,同时提供例子。

7
"我觉得很多库的编写可以更好" - 那你写一个,我们都会很高兴。 - ant
@Timothy,我喜欢jQuery——因为它有一个强大的用户群和社区支持。这使得它比YUI等框架更友好。 - Barrie Reader
1
jQuery并不使用浏览器嗅探技术,而是为开发人员提供了支持,以便他们选择是否使用浏览器嗅探技术(请参见http://api.jquery.com/jQuery.browser/)。此外,jQuery本身作为构造函数实现(请参见https://dev59.com/p3I-5IYBdhLWcg3wcn3m#1853246),即它确实使用“new”关键字。 - Crescent Fresh
jQuery 提供浏览器嗅探功能,但建议不要使用它。在其内部,它仅使用特性嗅探。而且它实际上没有任何需要使用 new 的对象。所以我认为这些不是讨厌 jQuery 的好理由。 - bobince
1
我从未发现过一个框架是完全没有问题的 - Prototype 1.x 和 jQuery 一样糟糕,只是以不同的方式 - 我并不认为有可能制作一个非邪恶的框架。JavaScript 和 DOM 的本质使得以清晰的方式添加功能变得困难。而且,说实话,纯 JavaScript 本身就很邪恶。 - bobince
显示剩余3条评论
4个回答

6

我曾经持有同样的观点,从不使用JS库——因为我可以自己做。但是在我的工作中,我被迫使用Jquery。

在那之前,我会使用Prototype和script.aculo.us,因为它们对你的日常工作流程的最小化注入让我很喜欢。

但是说这些库是邪恶的并不是我认同的观点。看看许多库的代码,它们写得很好,简明扼要。它们通常适用于所有浏览器且没有错误。

这是使用这些框架的真正原因——实现你可以创建的代码,只不过更好。我永远不会像说出口那样大胆地声明,我能像100个贡献者一样彻底完成工作。

此外,它们吞噬的时间也很重要。如果我可以节省3天的项目创建和调试时间——因为有人已经为我愉快地做了同样的事情,那就太好了!然后希望我能在某一天回馈。

我不相信有邪恶的框架,只有不同的框架。


1

哈哈。这当然是主观的,但无论如何...

就我个人而言,我认为YUI最不邪恶,因为它有Douglas Crockford本人支持。(话说得够多了)

虽然,我并不认为其他框架一定是邪恶的......

jQuery似乎追求易用性(只需包含jquery.js,复制粘贴一些示例,稍微修改一下就可以了)。

Dojo则追求完整性(据我所知),实现了许多实用程序(类似于Java的apache commons),以及广泛的小部件、网格和图表。

然后还有Prototype,我不太喜欢它,因为它修改了原生对象。

还有Ext JS,它有很多小部件和可视化组件来构建完整的应用程序,但我会远离它...


Ext JS现在已经获得GPLv3许可,不再存在开源争议。 - Dan Dascalescu
codemonkeyism的链接已经失效。 - Andy

-1

我的选择是jQuery。使用noConflict()函数可以在同一页面上使用多个版本,使用CSS选择器的学习曲线也很简单。


1
你有没有仔细阅读问题? - Timothy

-2

2
它自称为“Ajax库”。我希望网站上有一个-1按钮。 - Matti Virkkunen
A) 它并不是。它说自己是一个“浏览器脚本库(也被称为Ajax库)”,这是因为许多人(不了解更多)认为“JavaScript库”和“Ajax库”是相同的。就像许多框架一样,如果不需要,可以省略Ajax作为其中的一小部分。B) “Ajax库”有什么问题? - RoToRa
“Ajax”这个词已经因为被滥用或过度使用而变得意义模糊,现在它有着十几种不同的含义。我更倾向于完全避免使用这个术语。让我们把流行语留给市场营销吧。 - Matti Virkkunen
我完全同意你的观点。在我看来,网站上的措辞、库的结构以及构建器的存在都充分证明了这一点。 - RoToRa

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接