随着web应用开发的技术发展,javaScripts在Web开发中显得尤为重要。由于html5的异军突起,使前端技术更加火热,javascript应用越来越复杂,因此各种框架和库层出不穷。这里顺便说一下框架与库的区别。库提供了一系列方便调用的接口,包含一些能够完成特定或特定类型的明确任务的可重用的代码。框架与库最重要的区别在于其控制反转(Inversion of Control)的特点。Stack Overflow上一个经典回答:you call library,framework calls you。即是,库是被你调用的,而框架则是调用你的代码。
那么,我们来看看我们经常用到的框架(库)有哪些呢?
1.jquery库
jquery一般编程的人都会有涉及过,jQuery是继prototype后又一个javascript库,它是一个轻量级的库,无缝兼容html5及css3,还兼容几乎所有现有浏览器(2.0以后版本不支持IE6/7/8)。jQuery是免费、开源的,其使用MIT许可协议。其设计的核心理念是write less,do more。据统计,世界前10000个访问最多的网站中,有超过55%在使用jQuery。
2、AngularJs企业级框架
AngularJs是一款优秀的企业级框架,于2009年发布,后被google收购,现在google的多个产品中都有使用。其最为核心的特性为:MVC、模块化、自动化双向数据绑定、语义化标签及依赖注入等等。AngularJs是为了克服HTML在构建应用上的不足而设计的,其通过新的属性和表达式扩展了HTML。并不是所有的web应用都适合使用它,主要考虑那些使用CRUD的单一页面应用程序(Single Page Applications,SPAs)。学习AngularJs也非常简单,中文教程或英文教程都非常丰富,有兴趣的同学可以了解下。
3、React框架
React框架这几年也非常的热门,其本身是来自于Facebook的内部项目,后来觉得非常好用便开源了。其称为构建用户接口而提供的Javascript库。React主要用来构建UI,其专注于MVC的V部分。它抽象出了DOM,因此优化了渲染,并允许你使用Node.js来渲染React。与已知库或框架可以很好的配合,如AngularJs、Backone。
4、vue未来的主流
vue.js 是用来构建web应用接口的一个库,技术上,Vue.js 重点集中在MVVM模式的ViewModel层,它连接视图和数据绑定模型通过两种方式。实际的DOM操作和输出格式被抽象的方式到指令(Directives)和过滤器(Filters)。在哲学领域内,尽量让MVVM数据绑定API尽可能简单。模块化和可组合性也是重要的设计考虑。vue不是一个全面的框架,它被设计成简单的和灵活的。你可以用它快速原型,或混合和匹配与其他库定义前端堆栈。Vue.js的API是参考了AngularJS、KnockoutJS Ractive.js Rivets.js。尽管有相似之处,我相信Vue.js提供一个有价值能够让你在现在的一些现有框架中舍取其价值,即使你已经熟悉其中的一些术语,建议您通过以下概念的概述,因为你的这些术语的概念可能在Vue.js的下文中有所不同
5、RequireJs
RequireJs是一个javascript模块加载器,提高网页的加载速度和质量。大多数情况下我们都把JS写在一个代码文件,后来文件越来越大,就分割成几个小文件,随着JS文件越来越多,增加网页的Request次数,失去响应时间越长。其次,由于几个JS文件存在依赖关系,因此必须保证加载顺序正确,这样给编写代码及维护都带来一定程序的困难。RequireJs就是解决这些问题的,实现JS文件的异步加载,避免网页失去响应,实现模块化,按需加载,提高代码的可维护性。
6、Backone框架
Backone是一个帮助开发重量级Javascript应用的框架,但它本身简单的框架。其文件体积很小,压缩后只有5.3KB,提供了全功能的MVC框架及路由。Backone强制依赖于Underscore.js,非强制依赖于jQuery/Zepto。当你在开发时不需要像AngularJs或Ember这样的大型框架时,Backone也许是一种很好的选择。
7、D3.js
数据可视化和图表是Web应用中不可或缺的一部分。d3.js就是最流行的可视化库之一,它允许绑定任意数据到DOM,然后将数据驱动转换应用到Document中。它能够把数据和HTML、SVG、CSS结合起来,创造出可交互的数据图表,而不必受限于Flash或Silverlight。它是Github上最受欢迎的项目之一,并被数百个组织机构所使用。
除以上介绍的外,还有许多优秀的JS库或框架或工具,像构建3D特效的Three.js,测试工具PhantomJS、工程命令行构建工具Grunt等等,这里就不一一列出了。
当然,如果你知道有更好的更流行的框架或库,请告知,一同学习进步。