移动端开发框架哪个好?jQuery/Vue/AngularJS有哪些区别和优缺点?


发布者 ourjs  发布时间 1513344701701
关键字 JS学习  分享 

JS框架,我认为大体上可以分为两种。一种是类似jQuery/ d3那样的,通过修改html的DOM结构来渲染UI的库。

还有一种则是类似于AngularJS/ReactJS 那样的,采用MVC分层的,通过Model来渲染View UI框架。


性能比较

jQuery基本都是浏览器原生操作,实计上h5的很多api都借鉴了jQuery,比如说在兼容IE6~IE7的蛮荒时代,HTML是没有按元素类选择器查找元素这类接口的,只有  document.getElementById 这一个常用的按ID取元素方法。

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">
{{ message }}
</div>
var app = new Vue({
el: '#app',
data: {
message: 'Hello 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 之类的,有兴趣也可以研究一下。





回复 (2)
微信扫码 立即评论




 热门文章 - 分享最多
  1. redis、memcache和mongodb各自的优缺点是什么,怎么选择呢?
  2. 垄断"开源硬件"树莓派芯片的供应商博通要收购高通了
  3. Node.JS 8.x和9.x新特性:N-API,NPM5,ERROR CODE
  4. GitHub2017年度开发者报告 JavaScript依然遥遥领先Python突飞猛进
  5. 40行JavaScript代码实现的3D旋转魔方动画效果
  6. NodeJS动态传参特性:不定个数参数的省略,默认值与解构
  7. 红衣教主周鸿祎会不会成为中国首富
  8. Node.JS与USB接口通信:检测U盘/移动硬盘插拔事件和发送接数据
  9. OnceAir顽石企业私有云网盘使用介绍
  10. Node.JS读取中文TXT编码文件显示乱码问题解决方案

 相关阅读
  1. Node.JS 8.x和9.x新特性:N-API,NPM5,ERROR CODE
  2. Node.JS读取中文TXT编码文件显示乱码问题解决方案
  3. Node.JS与USB接口通信:检测U盘/移动硬盘插拔事件和发送接数据
  4. NodeJS动态传参特性:不定个数参数的省略,默认值与解构
  5. 从 Node 到 Go:一个粗略的比较—GO平均性能比JavaScript快十几倍
  6. Node.JS中如何快速扫描端口并发现局域网内的Web服务器地址(80)
  7. Node.JS循环递归复制文件夹目录及其子文件夹下的所有文件
  8. 正则中test、exec、match的简单区别,以及括号的用法
  9. node.js使用unzip解压zip包指定文件,提取 word/excel (docx/pptx/xlsx) 文本内容
  10. Linux下用node.js提取Word(doc/docx)/PDF文本内容

  开源的 OurJS
OurJS开源博客已经迁移到 OnceOA 平台。

  关注我们
扫一扫即可关注我们:
OnceJS

OnceOA