• JavaScript 常见框架和库的比较
  • 发布于 2个月前
  • 143 热度
    0 评论
  • 吴中有
  • 2 粉丝 14 篇博客
  •   

JavaScript 框架和库



项目根据流行度排序…

jQuery



jQuery 仍然是最常用的 JavaScript 库,WordPress,ASP.NET和其他几个框架的创建和分发都依赖于它。它彻底改变了客户端的开发,将 CSS 选择器引入到 DOM 节点检索加链接来应用事件处理程序、动画和Ajax调用。

虽然 jQuery 最近几年失宠,但对于需要少量 JavaScript 功能的项目来说,它仍然是一个可行的选择。

优点:

  • 分布规模小

  • 学习曲线平缓,在线帮助多

  • 语法简洁

  • 容易延伸

缺点:

  • 增加了本机API的速度开销

  • 浏览器兼容性的改善降低了它的性能

  • 用法扁平

  • 有些开发人员抵制使用

React






type

library

website

facebook.github.io/react/

中文文档

React 中文文档

repository

github.com/facebook/react

GitHub stars

115,000+

current version

16.6.3

developer

Facebook and contributors

launch date

March 2013

typical size

21kb min

typical use

single-page applications

usage

low

React 也许是过去一年里最受关注的库了吧。React 是一个用于构建用户界面的 JavaScript 库,它专注于 MVC 模式(Model-View-Controller) 的 “View” 部分,并且可以轻松创建保留状态的 UI 组件。 它是实现虚拟 DOM 的第一个库, 内存结构计算差异,有效地更新页面。

从统计数据中看,反应的使用似乎很低,可能是因为它更多的在应用程序中使用,而不是网站上使用。70%的程序员表示他们正在使用该库。

优点:

  • 小巧,高效,快捷灵活

  • 简单的组件模型

  • 良好的文档和在线资源

  • 适用于服务器端渲染

  • 处于高速发展期

缺点:

  • 需要学习新的概念和语法

  • 构建工具必不可少

  • 要求其他库或框架提供 Model 和 Control

  • 与修改 DOM 的代码和其他库不兼容

AngularJS 1.x






type

framework

website

angularjs.org

repository

github.com/angular/angular.js

current version

1.7.5

developer

Google

launch date

October 2010

typical size

144kb

typical use

single-page applications

usage

low

在这个列表中,Angular是第一个框架(或MVC应用程序框架)。最流行的版本是 1.x 版本,它使用双向数据绑定扩展 HTML ,同时将 DOM 操作与应用程序逻辑分离 。

尽管版本2(现在是版本7!)已经发布,Angular 1.x仍在开发中。 见下文…

优点:

  • 众多大公司采用

  • 以单一的解决方案来生产现代 Web 应用程序

  • “标准” MEAN 堆栈(MongoDB,Express.JS,AngularJS,NodeJS) 的一部分,有众多文档和教程可用来参考

缺点:

  • 学习曲线更加陡峭

  • 代码库很大

  • 不能升级到Angular 2.x

Angular 2.x (现在是 7.x)






type

framework

website

angular.io

repository

github.com/angular/angular

current version

7.1

developer

Google

launch date

September 2016

typical size

450kb min

typical use

single-page applications

usage

low

Angular 2.0 于 2016 年 9 月发布。这是一次完全的重写,它引入了基于模块化组件的模型,使用 TypeScript(被编译为JavaScript )创建。让人困惑的是,版本 4.0 于 2017 年 3 月发布( v3 被跳过以避免语义版本的问题)。

Angular 2+ 与 v1 截然不同。与其他也不兼容 – 也许 Google 应该给该项目另外起一个名字。

优点:

  • 单一的解决方案来生产现代Web应用程序;

  • 尽管 Angular 2+ 教程 较少,但它仍是 MEAN 堆栈的一部分

  • 对于熟悉静态类型语言(如 C# 和 Java )的人员,TypeScript 提供了一些优势

缺点:

  • 更陡峭的学习曲线

  • 代码库很大

  • 不能从 Angular 1.x 升级

  • 与 1.x 相比,Angular 2.x 的使用率相对较低

  • 尽管是Google的项目,但 Google 似乎并没有使用它?

Vue.js







type

framework

website

vuejs.org

repository

github.com/vuejs/vue

current version

2.5.17

developer

Evan You

launch date

February 2014

typical size

19kb min

typical use

single-page applications

usage

low

Vue.js 是一个用于构建用户界面的轻量级渐进式框架。core(核心) 提供了一个类似于 React 的虚拟 DOM 视图层,它可以与其他库集成,但它也能支持单页应用程序。该框架由以前在 AngularJS 工作过的 Evan You 创建,所以该框架提取了 AngularJS 中作者喜欢的部分。

Vue.js 使用 HTML 模板语法将 DOM 绑定到实例数据。模型是在更改数据时更新视图的纯 JavaScript 对象。附加工具提供了脚手架,路由,状态管理,动画等功能。

优点:

  • 易于上手,普及度高

  • 起点简单,但完成满意度高

  • 依赖性小,性能好

缺点:

  • 是一个新项目,所以风险可能会很大

  • 依赖开发人员来更新

  • 相对同类框架,资源较少

Sencha Ext JS







type

framework and component library

website

sencha.com/products/extjs/

current version

6.6.0

developer

Sencha

launch date

December 2007

typical size

depends on requirements: 85 – 500kb

typical use

components and single-page applications

usage

low

Ext JS是从YUI-Ext演化而来的,它是这个列表中历史最悠久的一个。尽管Ext JS以其广泛的可配置、可访问、跨浏览器的UI组件和数据可视化工具而闻名,但它也提供了构建完整应用程序的框架。或者,您可以使用React或Angular的组件库。

Ext JS是这里提供商业培训和支持的唯一框架。 Sencha团队还可以帮助您查看代码,自动化测试以及迁移到其他平台。

优点:

  • 各种可用组件

  • 包含创建Web和移动应用程序所需的所有内容

  • 脚本定制,设计工具和快速原型

  • 提供用于可视化构建和样式化Web应用程序的工具

  • 商业支持和优秀的文档

  • 适用于小型应用程序的30天免费试用版和社区版(每年收入低于10,000美元)

缺点:

  • 与React和Angular之外的框架集成可能是不切实际的 – 请参阅Ext JS 7的路线图计划

  • 深度自定义UI更改可能很困难

Lodash 和 Underscore






type

library

website

lodash.com/

中文文档

Lodash 中文文档

repository

github.com/lodash/lodash/

current version

4.17.11

developer

John-David Dalton

launch date

April 2012

typical size

4kb – 24kb min

typical use

general purpose

usage

low




type

library

website

underscorejs.org/

中文文档

Underscorejs 中文文档

repository

github.com/jashkenas/underscore

current version

1.9.1

developer

Jeremy Ashkenas

launch date

October 2009

typical size

6kb min

typical use

general purpose

usage

low

本节将 Lodash 和 Underscore 放在一起,因为它们提供了数百个功能性的 JavaScript 实用程序来补充原生字符串,数字,数组和其他原始对象的方法。二者有一些功能性的重叠,所以你不太可能在一个项目中同事需要这两个库。

它在客户端使用率似乎很低,但是可以在服务器端的 Node.js 应用程序中使用这两个库。

优点:

  • 小而简单

  • 拥有优质文档,易于学习

  • 与大多数库和框架兼容

  • 不扩展内置对象

  • 可以在客户端或服务器上使用

缺点:

  • 有些方法只适用于ES2015及更高版本的 JavaScript

Backbone.js






type

framework

website

backbonejs.org

中文文档

Backbone.js 中文文档

repository

github.com/jashkenas/backbone/

current version

1.3.3

developer

Jeremy Ashkenas

launch date

October 2010

typical size

8kb min

typical use

single-page applications

usage

low

Backbone.js 是提供常见的服务器端框架MVC结构最早的客户端选项之一,它唯一的依赖是由同一开发人员创建的 Underscore.js 。

Backbone.js 声称是一个库,因为它可以与其他项目集成,但我认为大多数程序员都认为它是一个框架。

优点:

  • 体积小,重量轻,复杂度低

  • 不添加HTML的逻辑

  • 文档丰富

  • 采用了许多应用,包括 Trello ,WordPress.com ,LinkedIn 和 Groupon

缺点:

  • 与 AngularJS 等相比,抽象度较低

  • 需要额外的组件来实现数据绑定等功能

  • 新的框架基本已经不再采用 MVC 架构

Ember.js






type

framework

website

emberjs.com

repository

github.com/emberjs/ember.js

current version

3.6.0

developer

Ember team

launch date

December 2011

typical size

95kb min

typical use

single-page applications

usage

low

Ember.js是基于Model-View-ViewModel(MVVM)模式的框架之一。 它在单个包中实现模板化,数据绑定和库。如果 Ruby on Rails体验的用户,能够迅速熟悉其配置概念。

优点:

  • 为客户端应用程序提供单一解决方案

  • 程序员可以快速开发—其使用 jQuery

  • 良好的向后兼容性和升级选项

  • 采用了现代 Web 开发标准

缺点:

  • 大分配 large distributable

  • 与其他正在向较小组件结构移动的框架相比,被认为是单一的

  • 陡峭的学习曲线

Knockout.js






type

framework

website

knockoutjs.com](http://knockoutjs.com/)

repository

github.com/knockout/knockout

current version

3.5.0

developer

Steve Sanderson

launch date

July 2010

typical size

59kb min

typical use

single-page applications

usage

low

较早的MVVM框架之一,Knockout.js 使用观察者来确保 UI 与底层数据保持同步。它具有模板和依赖关系跟踪。

优点:

  • 小而轻便,无依赖

  • 支持回溯到IE6

  • 优质文档

缺点:

  • 较大的项目可能变得复杂

  • 发展速度已经放缓

  • 使用情况正在下降

用户评论