JS框架,我认为大体上可以分为两种。一种是类似jQuery/ d3那样的,通过修改html的DOM结构来渲染UI的库。
还有一种则是类似于AngularJS/ReactJS 那样的,采用MVC分层的,通过Model来渲染View UI框架。
性能比较
var wrapper = document.getElementById('wrapper')
jQuery 实现了一系列的按类/ID/元素名查找元素的引擎。
//按ID名 var $wrapper = $('#wrapper') //按类名 var $wrapper = $('.article-title')
不过随着浏览器的发展,浏览器本身也已经支持类选择器了:
//查找单个元素 var wrapper = document.querySelector('#wrapper') //查找多个元素 var articleTitles = document.querySelectorAll('.article-title')
所以后来的jQuery版本就开始直接使用这些接口,所以基本上元素选择和更新都是使用浏览器原生的接口,这些操作几乎都没有性能损耗。所以说jQuery 操作DOM的性能还是比较好的。
开发效率比较
jQuery更新HTML虽然性能比较好,但是效率比较低,而且也不太符合目前浏览器的分层的前后端分离实践。因此出来后来的Backbone/ Angular 这样将JSON Data数据渲染成Html View的MVC/MVVM框架。极大地提高了开发效率。注意这里也有些区别,jQuery类似于库,而Angular类似于框架,这也意味着使用Angular要严格按照框架规定来写。但Vue虽然也是MVC渲染,但更像一个库,所以明显要比Angular上手要容易,比如说下面的这个,直接绑定即可:
<div id="app"> |
var app = new Vue({ |
总结:jQuery从后台返回的数据要渲染到前端上需要通过手动更新DOM,但是手动改DOM一般比MVC渲染的性能好。但开发效率和代码规范不如NG/ReactJS。
目前总体来说基于jQuery的前端组件库最多,而Angular/React的还比较少。
下面列举几个比较知名的前端UI库:
Bootstrap
这个基本上就不用说明了,一个前端CSS框架,基于jQuery,但是很多复杂的控件没有,像 datagrid/ dialog/ tree/ charts之类的,不过基于bootstrap的组件库也比较多,可以自己去找找。
Foundation
类似Bootstrap https://foundation.zurb.com/
Semantic UI
前端框架,不过组件也比较少https://github.com/Semantic-Org/Semantic-UI
Kendo UI
kendoui.com 传统的各种datagrid/charts/dialog库,分开源和商业两种版本,使用比较复杂的控件要购买商业版。
Materialize
另一个前端响应式Web框架 https://github.com/Dogfalo/materialize
jQuery Mobile
http://demos.jquerymobile.com/1.4.5/slider/jQuery Mobile一些组件库(而非jquery的移动版本)。jQuery Mobile是一款基于HTML5的用户界面系统,
Sencha Touch
以前叫Ext,注意它不是基于jQuery的,是基于另外一种元素选择器构建起来的前端组件库。
另外还有一些 Amazeui/ jQuery EasyUI/ materialize/ weex 之类的,有兴趣也可以研究一下。
rtyrt
我习惯用Bootstrap模板