原文连接:https://www.sitepoint.com/top-javascript-frameworks-libraries-tools-use/javascript
源于:葡萄城控件vue
欢迎你们持续关注葡萄城控件技术团队博客,更多更好的原创文章尽在这里~~java
相比于JavaScript开发人员的数量,目前JavaScript框架、类库和工具的数量彷佛更多一些。截至2017年5月,GitHub上的快速搜索显示,有超过110万个JavaScript项目。npmjs.org有50万个可用的软件包,每个月下载量近100亿次。node
本文将会讨论目前最为流行的客户端JavaScript框架、类库和工具以及它们之间的基本差别。也许本文没法告诉你哪一个是最好的,可是最适合本身项目的,就是最好的。react
类库是一个有组织的功能集合。典型的类库包括字符串处理、日期、HTML DOM元素、事件、Cookie、动画、网络请求等功能。你能够本身实现一个函数,以便选择该函数被调用时是否须要返回一个值。jquery
类库一般提供一种高级别的抽象方法,可以帮助顺利实现项目的细节部分。例如,Ajax一般依赖于XMLHttpRequest API,只须要几行代码就实现功能,只是浏览器之间存在细微的差别。类库提供了更简单的ajax()函数,所以开发者能够专一于更高级别的业务逻辑上。webpack
类库可以使将开发时间缩短20%,开发者没必要担忧细节实现。git
可是也有缺点:angularjs
框架是应用程序的骨架。它要求以特定的方式来进行软件设计,在某些节点上实现本身的逻辑。框架一般提供了事件、存储和数据绑定等功能。es6
框架一般提供了比类库更高层次的抽象,帮助快速构建项目的前80%。
框架的缺点:
工具会帮助开发工做,但却不是项目的组成部分。工具包括构建系统、编译器、转译器、代码分割器、图像压缩器、部署机制等。
工具帮助实现一个更容易的开发过程。例如,对比于CSS,许多编码者更喜欢Sass,由于它提供了代码分离、嵌套、渲染时变量、循环和函数。浏览器不了解Sass / SCSS语法,所以在测试和部署以前,必须使用适当的工具将代码编译为CSS。
类库、框架和工具之间的区别很小。框架能够包括一个类库,类库能够实现相似框架的方法,项目中任何一种工具都是必不可少的。因此不须要明确的区分类库、框架和工具。
如下是按照流行程度进行的排序:
jQuery |
|
类型 |
类库 |
网站 |
|
知识库 |
|
当前版本 |
3.2.1 |
开发人员 |
jQuery团队 |
发布日期 |
2006年8月 |
大小 |
最小30kb |
用途 |
通用 |
使用度 |
随着WordPress、ASP.NET和一些其它框架的发布,jQuery仍然是最经常使用的JavaScript类库。它经过将CSS选择器引入到DOM节点检索加链来应用事件处理程序、动画和Ajax调用,这完全改变了客户端的开发。
jQuery近年来备受青睐,对于须要少许JavaScript功能的项目来讲,仍然是一个好选择。
优势:
缺点:
Lodash |
|
类型 |
类库 |
网站 |
|
知识库 |
|
当前版本 |
4.17.4 |
开发人员 |
John-David Dalton |
发布日期 |
2012年4月 |
大小 |
最小4kb - 24kb |
用途 |
通用 |
使用度 |
低 |
Underscore |
|
类型 |
类库 |
网站 |
|
知识库 |
|
当前版本 |
1.8.3 |
开发人员 |
Jeremy Ashkenas |
发布日期 |
2009年10月 |
大小 |
最小6kb |
用途 |
通用 |
使用度 |
低 |
Lodash和Underscore在本节一块儿谈论。它们提供了数百个功能性的JavaScript实用程序来补充原生字符串、数字、数组和其它原始对象方法。虽然两个类库之间有一些重叠,可是不太可能在一个项目中同时使用这两个类库。
虽然两个类库在客户端使用率很低,可是却能够在服务器端的Node.js应用程序中使用这两个类库。
优势:
缺点:
AngularJS |
|
类型 |
框架 |
网站 |
|
知识库 |
|
当前版本 |
1.6.4 |
开发人员 |
|
发布日期 |
2010年10月 |
大小 |
144KB |
用途 |
单页应用程序 |
使用度 |
低 |
Angular是框架(或MVC应用程序框架)类列表中的第一个。目前最流行的Angular版本是1.x,它使用双向数据绑定扩展HTML,同时解耦了DOM操做和应用程序逻辑。
尽管版本2(如今是版本4!)已经发布了,可是Angular 1.x仍在开发中。
优势:
缺点:
Angular |
|
类型 |
框架 |
网站 |
|
知识库 |
|
当前版本 |
4.1 |
开发人员 |
|
发布日期 |
2016年9月 |
大小 |
最小450kb |
用途 |
单页面应用 |
使用度 |
低 |
Angular 2.0于2016年9月发布。这是一个完整的重写,它引入了使用TypeScript建立的基于模块化组件的模型。Angular 4.0于2017年3月发布。
Angular 2.x与v1版本大相径庭,也不与其它版本兼容 - 也许Google应该给项目起一个不一样的名字!
优势:
缺点:
React |
|
类型 |
框架 |
网站 |
|
知识库 |
|
当前版本 |
15.5.4 |
开发人员 |
Facebook和贡献者 |
发布日期 |
2013年3月 |
大小 |
最小21kb |
用途 |
单页应用程序 |
使用度 |
低 |
React是一个用于构建用户界面的JavaScript类库,也是去年最受关注的类库。它专一于Model-View-Controller(MVC)开发的“View”部分,使用它能够轻松建立保留状态的UI组件。它是实现虚拟DOM的首选类库之一, 它的内存结构可以有效地计算差别,页面更新也更加有效。
统计显示React的使用度彷佛很低,由于它是在应用程序中使用而不是在网站。
优势:
缺点:
了解更多关于React the ES6 Way
Vue.js |
|
类型 |
框架 |
网站 |
|
知识库 |
|
当前版本 |
2.0 |
开发人员 |
Evan You |
发布日期 |
2014年2月 |
大小 |
最小19kb |
用途 |
单页面应用 |
使用度 |
低 |
Vue.js是一个用于构建用户界面的轻量级渐进框架。它提供了一个相似React的虚拟DOM驱动视图层,能够与其它类库集成,用于构建强大的单页面应用。该框架是由以前在AngularJS工做过的Evan You建立的,他提取了AngularJS中本身喜欢的部分。
Vue.js使用HTML模板语法将DOM绑定到实例数据。Model是在数据改变时更新view的纯JavaScript对象。
优势:
缺点:
|
|
类型 |
框架 |
网站 |
|
知识库 |
|
当前版本 |
1.3.3 |
开发人员 |
Jeremy Ashkenas |
发布日期 |
2010年10月 |
大小 |
最小8kb |
用途 |
单页面应用 |
使用度 |
低 |
Backbone.js是提供服务器端框架中常见的MVC结构的最先客户端选项之一。它惟一的依赖是Underscore.js。
Backbone.js声称是一个类库,由于它能够与其它项目集成,可是我以为大多数开发人员都认为它是一个框架。
优势:
缺点:
Ember.js |
|
类型 |
框架 |
网站 |
|
知识库 |
|
当前版本 |
2.15.0 |
开发人员 |
Ember team |
发布日期 |
2011年12月 |
大小 |
最小95kb |
用途 |
单页面应用 |
使用度 |
低 |
Ember.js是基于Model-View-ViewModel(MVVM)模式的框架之一。它在单个包中实现模板化、数据绑定和类库。
优势:
缺点:
|
|
类型 |
框架 |
网站 |
|
知识库 |
|
当前版本 |
3.4.2 |
开发人员 |
Steve Sanderson |
发布日期 |
2010年7月 |
大小 |
最小59kb |
用途 |
单页面应用 |
使用度 |
Knockout.js是最先的MVVM框架之一,它确保了UI与底层数据保持同步,具备模板和依赖关系跟踪。
优势:
缺点:
如下项目虽然不是特别流行,但值得考虑:
构建工具自动执行各类Web开发任务,例如预处理、编译、优化图像、缩小代码、代码分析和运行测试等。任务能够在一个可执行包中统一管理。
目前最受欢迎的工具以下:
Gulp.js |
|
网站 |
|
知识库 |
|
当前版本 |
3.9.1 |
每个月下载 |
300万 |
虽然Gulp不是第一个任务执行工具,它却很快成为了最受欢迎的。Gulp使用易于阅读的JavaScript代码,将源文件加载到流中,并在将数据输出到构建文件夹以前,经过各类插件管理数据。在任何其它选项以前检查Gulp.js是简单、快速和有趣的。
NPM |
|
网站 |
|
知识库 |
|
当前版本 |
4.5.0 |
每个月下载 |
300万 |
npm是Node.js包管理器,但其脚本工具可用于运行通用任务。对于具备少许依赖关系的简单项目来讲,这是一个很好的选择。然而,更复杂的任务可能会变得不太适用。
Grunt |
|
网站 |
|
知识库 |
|
当前版本 |
1.0.1 |
每个月下载 |
200万 |
Grunt是第一批被大规模采用的JavaScript任务执行工具之一,但其速度和复杂的JSON配置却致使了Gulp的兴起。如今这些问题已经获得了解决,Grunt仍然是一个受欢迎的选择。
多个JavaScript文件的管理已经成为了一件繁琐的事情。默认状况下,浏览器文件不会被编译,所以其依赖关系必须以适当的顺序进行加载或链接。虽然有像ES6模块和CommonJS这样的选项,可是浏览器支持是有限的,所以模块绑定变得十分重要。
WebPack |
|
网站 |
|
知识库 |
|
当前版本 |
2.5.1 |
每个月下载 |
600万 |
Webpack支持全部流行的模块选项,并已成为React开发的代名词。虽然Webpack声称是一个模块捆绑程序,可是已经能够用做通用任务运行程序了。
Browserify |
|
网站 |
|
知识库 |
|
当前版本 |
14.3.0 |
每个月下载 |
260万 |
Browserify支持Node.js正在使用的CommonJS模块,它将全部模块编译成单个浏览器兼容的文件。
RequireJS |
|
网站 |
|
知识库 |
|
当前版本 |
2.3.3 |
每个月下载 |
百万 |
RequireJS是一种浏览器中的模块加载器,它也能够在Node.js中使用。
代码分析工具用于分析代码中潜在错误或偏离语法的标准。一个未闭合括号或未声明的变量必定会被检测出。
ESLint |
|
网站 |
|
知识库 |
|
当前版本 |
3.19.0 |
每个月下载 |
600万 |
ESLint是一种可插拔的代码分析工具。每一个规则都是一个插件,所以能够根据我的喜爱进行配置。
JSHint |
|
网站 |
|
知识库 |
|
当前版本 |
2.9.4 |
每个月下载 |
200万 |
JSHint是一个灵活的JavaScript代码分析工具,它很好的平衡了真正的错误和老旧的语法。
JSLint |
|
网站 |
|
知识库 |
|
当前版本 |
0.10.3 |
每个月下载 |
50000 |
JSLint是最先的代码分析工具之一,它实现了一套严格的默认规则。
测试驱动开发的任务要求须要编写代码来测试本身的代码。目前有许多选择,包括Ava, Tape 和Jest ,但目前最流行的三个工具是:
Mocha |
|
网站 |
|
知识库 |
|
当前版本 |
3.3.0 |
每个月下载 |
500万 |
Mocha是一个JavaScript测试框架,能够在Node.js或浏览器中运行测试。它支持异步测试,而且常常与Chai配合使用,这样可使测试代码以可读取的方式表达。
Jasmine |
|
网站 |
|
知识库 |
|
当前版本 |
2.6.0 |
每个月下载 |
200万 |
Jasmine是一个行为驱动的测试工具,能够在浏览器中自动测试UI和交互。
QUnit |
|
网站 |
|
知识库 |
|
当前版本 |
1.0.0 |
每个月下载 |
25000 |
QUnit是一个单元测试框架,能够在输入特定参数时,检查函数结果。它还上报测试结果,确保没有错过特定的代码分支。
目前最为流程的框架是React,同时其它的框架也在向着流行的趋势发展。
若是须要一个安全的、通用的Web应用程序,能够考虑使用Vue.js。
总体框架已经再也不受欢迎了,若是你须要对一个较大型项目进行严格的结构管理,AngularJS是一个不错的选择。目前大多数人坚持使用Angular 1.0版本,可是长远来说,若是你愿意学习TypeScript,Angular 4.x版本是个更好的选择。
jQuery虽然如今并不十分流行,在技术新闻中也不多会被提到,但不能否认它是积极开发的,同时也是网站和应用程序的有力工具。jQuery具备平缓的学习曲线,全球许多开发人员可以很好地理解。
若是你想要冒险,能够试试Svelte这是一个有趣的客户端/服务器框架,它能够在构建时预先呈现JavaScript,而且能够改变咱们开发的方式。
工具的选择因项目而异。虽然目前使用Gulp的开发者占大多数,但WebPack却愈来愈受欢迎。同时你也不能错过ESLint和Mocha等测试工具。
过去的十年,JavaScript经历了革命性的发展。过去只有少许基本的类库能够选择,可是如今可供选择的类库已经铺天盖地。也许没法肯定哪一个类库、框架和工具是最好的,可是最适合本身项目的,就是最好的。
若是本文错过了你最喜欢的JavaScript类库,框架或工具?欢迎在文末评论。