如果你看到这则信息,这表示下载可汗学院的外部资源时遇到困难.

If you're behind a web filter, please make sure that the domains *.kastatic.org and *.kasandbox.org are unblocked.

主要内容

你应该使用哪个 JS 库?

对于任何特定的功能,有可能有多个库来可以提供该功能。比如日期选择器就有很多库,例如"15个最好的jQuery DatePickers" 之类的文章都在试图帮助开发人员从中进行选择。
但是对于我们网络开发人员来说,太多的选择可能会导致决策瘫痪。我们怎么知道哪一个是最好的?如果我们做出了错误的选择该咋办?
在网络开发中,通常没有一个“最佳选择”。但是通常有比较之下会得到相对更好的选择,如下建议可以帮助你做出更好的选择。
由于在开发面向用户的产品时经常使用JS库,所以这些考虑应该满足两种受众:编写并维护使用该库的代码的开发人员(就像你一样的人!)和与之交互的用户。

这会是一个好的开发体验吗?

  • 文档良好: 它应该很容易找到一个函数声明的引用,实际使用示例,和一个更具叙事性的使用指南。如果一个函数库没有文档,通常这是一个信号,表示对开发人员不友好的信号。
  • 灵活性: 在文档中的示例可能看起来很好-但是可能希望和演示的内容稍微或者完全不同的方式来使用用函数库。寻找灵活性的信号-发送配置选项是否容易?是否有文件化插件构架?它触发很多可以用代码绑定的事件么?
  • 主动维护: 浏览器变化很快。曾经使用的函数库会突然停止工作,因为它们依赖于一些浏览器的怪癖。 对于 HTML5 shims and polyfills尤其如此, 因为浏览器经常随着HTML5元素的不断演进的实现而发布新版本。通过查看 更新日志中的日期,可以了解库最近是如何更新的。如果没有changelog,并且库托管在像Github这样的开放源码存储库中,那么您可以检查上一次提交的日期。
  • 展望未来: 如果你正在寻找一个 HTML5 "shim", 更喜欢一个 "polyfill" - 一个模仿这个API的shim。这样,从理论上讲,当所有用户都使用支持该技术的浏览器时,您就可以完全停止使用库,而不用更改代码。 例如,如果你正在使用一个库来在网页上使用视频,使用一个polyfill会允许您使用HTML5的video标记,并且它将使用退回技术如旧浏览器中的Flash来替换它。
  • 经过测试的: 所有好的库都应该包含可以保证他们功能如期工作的测试。当一个库是经过测试的,那么我们可以有信心在新版本的库中会有某种程度的向后兼容性。
  • 干净的代码: 我们可以把开源库当作黑盒,并拒绝去查看里面的代码,但是有时候,您可能需要深入库代码内部以调试问题或添加新功能。快速查看一下代码,看看它是多么容易阅读,是否有任何红色标志,比如大块的注释掉的代码。
  • 活跃的社区: 你有问题的。你遇到错误。理想情况下,你可以在开发者的帮助下解决它们,无论你是系统维护者还是用户。
如果库托管在Github这样的版本控制站点上,您可以查看:
  • 分支的数量:许多分支(或星形)意味着至少有许多开发人员非常关心这个库的分支。这并不意味着他们会帮助你,但这是一个开始!大型库通常有数千个分支,更多的小众库有100个或10个分支。
  • 问题是否很多: 还有很多悬而未决的问题吗?这可能是一个迹象,表明社区并没有围绕响应和解决问题做出努力。这也意味着它只是一个非常受欢迎的项目,有很多改进的想法,所以继续看看下一个。
  • 讨论时的气氛: 试着看看几个问题并提出请求。维护者接受反馈吗?他们会回答使用方面的问题吗?你从他们的谈话中感觉到了积极还是消极的氛围?
  • 外部社区: 关于这个库的问题是否在StackOverflow上得到了解答?是否有构建在库之上的库?许多较小的库不够大,无法拥有一个可见的外部社区,但是像Modernizr或骨干这样较大的库具有重要的外部社区,这是使用它们的一个很大的理由。您可以在网上搜索库名,以查看你找到的结果。

这将会是一个很好的用户体验吗?

如果JS库不创建UI组件,那么只有前几个组件是重要的。
  • 文件大小: 你的用户需要下载多少JS ?比如,jQuery gzip和minified是18k, Select2是7K。
  • 性能:除了大小,JS库的其他方面也会影响它的性能,比如如果它执行大量的DOM操作、图形渲染、计算、同步存储调用等等。找个性能好的,当然,你也可以自己都试一遍。
  • 浏览器支持: 看看它是否支持你想要的所有浏览器。因为它们被设计成轻量级的,现在许多库故意不支持旧的浏览器(你的网页可能需要支持这些浏览器),并且只适用于手机浏览器。
  • 便利性: 许多用于UI组件的库看起来很棒,但是它们是不可访问的(它们不能很好地为有视觉障碍的用户工作)。快速检查一下,你可以在库的演示页面上。运行WAVE
  • 响应性: 如果你的用户将在手机浏览器上使用来自库的UI组件,那么它应该可以很好地为他们工作。按钮够大吗?它使用触摸事件吗?它的屏幕尺寸小吗?
如果您已经考虑了所有这些条件, 但仍无法在少数库之间做出决定, 那么你可以尝试从朋友那寻求帮助: 询问同事或开发人员朋友他们使用的是什么库。你可能会发现一个你中意的。
记住:没有唯一的正确答案,也没有最佳选项。此外,你不必全面审查您正在考虑使用的每个JS库,特别是如果你在做自己的项目的时候。你可以选择一个库,在你使用它的时候看看你喜欢它什么。你将开始在头脑中建立一个最喜欢使用的库的列表和你自己的标准,这将有助于你在未来的决策。

想加入讨论吗?

尚无帖子。
你会英语吗?单击此处查看更多可汗学院英文版的讨论.