当前位置: 代码迷 >> JavaScript >> 对照Angular/jQueryUI/Extjs:没有一个框架是万能的
  详细解决方案

对照Angular/jQueryUI/Extjs:没有一个框架是万能的

热度:610   发布时间:2013-08-10 21:14:06.0
对比Angular/jQueryUI/Extjs:没有一个框架是万能的

?

对比Angular/jQueryUI/Extjs:没有一个框架是万能的

?

大漠穷秋

?

[郑重警告:此文略犀利,可能引起肾上腺素升高、内心不适等症状,请慎重浏览。]

?

Angular不能做什么?对比Angular/jQueryUI/Extjs

?

框架就好比兵器,你得明白你手里拿的是屠龙刀还是倚天剑,刀法主要是砍,剑法主要是刺。对于那些职业喷子和脑残粉,小僧送你们两个字:呵呵;同时祝你幸福,请点右上角。

?

首先要明白Angular不能做什么,或者Angular没有提供什么,然后再来看它能做什么,来看Angular与其它一些主流框架的对比。

?



?

?

对于上面的表格,有人可能要跟我抬杠,咱大jQuery不是有各种插件吗!不是有各种EasyUI、LigerUI等等一大堆UI吗!

?

我只想说,你特么到底有没有做过大型的开发?各种东西倒腾在一起的组装货能比得上品牌机?另外遇到jQuery版本不兼容就够你喝一壶了吧!说jQueryUI各种乱已经是对它客气了,实际上是一塌糊涂!

?

提醒某些小白区分好概念,小僧的喷点是jQueryUI,而不是jQuery,jQuery这把小巧玲珑的瑞士军刀小僧还是非常喜欢滴!另外,也有 一批基于jQuery的UI套件做得非常优秀,比如KendoUI,但是一分钱一分货,好东西基本上都是收费的。这么多年下来了,你应该早就习惯了这条行 规。再说一次,好!东!西!都!是!收!费!的!

?

又有人说,怎么没把bootstrap列在里面对比一下?请问油漆桶和Tank战车怎么比?你比给我看看。

?

关于前端UI体系的特别说明

?

对于前端UI系统,特别说明一下。一般来说,前端UI必须包含以下控件和工具(参照了我最熟悉的Extjs):

?

  • Form

    TextField

    NumberField

    PassWord

    ComboBox

    CheckBox

    Radio

    DatePicker/TimePicker(日期和时间控件一般没有人会自己去写,太复杂了!

    表单验证:本地验证和远程验证

  • DataGrid

    复杂表头、数据格式、行内各种格式、动态编辑、分页、动态列、滚动(等等)

    完善的数据表格也是一个非常复杂的控件,完全自己开发不容易!

  • Tree

  • Window

    模态/非模态

  • Panel

  • TabPanel

    tab懒加载(内存释放和浏览器兼容性比较繁琐,做完善不容易!

  • HTMLEditor

    应该没有哪个疯子想自己去做一个类似KindEditor那样在线编辑器吧!什么?你想做?药不能停!

  • 小组件

    ToolTip

    Slider

    Pager

    ProgressBar

    Menu

    Label

    Image

    Alert

  • 布局

    布局系统是比较复杂的,必须有深厚的CSS基础,否则搞出来的东西一定有兼容性问题!好吧,我知道有人肯定要说bootstrap了,既然都在说那么小僧就不说了,自己玩儿去!

  • 其它工具

    Ajax

    模板

    数据格式化

    其它各种控件就不说了,比如幻灯片效果、面包屑,再比如“×款超棒的jQuery××”等等。

?

Angular没有提供完善的UI,没有提供CSS样式套件,也没有对移动平台进行直接支持。所以,如果你使用Angular,你一定需要其它东西来配合。例如,如果需要UI,你需要使用jQueryUI,或者自己封装UI组件;如果需要CSS样式,你可以选择bootstrap或者LESS;如果需要支持移动平台,还是需要你自己 去开发。

?

好了,看到这里有人开始嘀咕了,这特么岂不是什么都没有嘛!!!

?

莫急,再来看Angular有什么。

?

Angular能做什么?

?

1、自动化的数据双向绑定;

2、MVC;

3、依赖注入---DI系统;

4、指令系统(可以自定义语义化标签)---Directive机制;

5、模块化---Module机制;

6、路由机制---Route机制;

7、服务---Service机制;

8、内嵌表达式---Expression机制;

9、前端代码单元测试和集成测试的自动化(借助于Yeoman等工具);

10、模板;

11、动态加载;

?

这么多机制里面,核心的核心是指令系统,实际上其它所有特性都是建立在指令系统之上的。本质上说,Angular写了一个JS版的编译器,一切都构 建在这款编译器之上。对于使用者来说,可以把解析器看成一个JS虚拟机,有兴趣的人可以自己阅读Angular的Parser(HTML解析器)源码。

?

HTML解析器机制是其它所有框架所不具备也不敢这样做的,它是Angular的灵魂。

?

结论

?

很显然,Angular并没有打算做一个高大全的所谓【框架】,它的核心价值在于,把一堆后台框架的概念带到了前端框架中,比如依 赖注入(来自Spring);同时又从其它地方抄了一些概念,比如数据自动双向绑定(貌似来自Flex)、模板、MVC、动态加载(来自 RequireJS等),等等。当然,这些理念都挺好。基于这些理念和工具,你可以把前端应用组织得非常良好。

?

但是,有一点请特别注意(尤其那些负责技术选型的所谓“架构尸”,请瞪大你的钛合金狗眼看好下面的内容):对于界面非常复杂的业务 型系统,必须要要有完备的UI支持(Form、DataGrid、Tree、Tab、Window等)。如果你的团队整体JS水平很烂,或者压根没打算自 己去做很多东西,请慎用AngularJS!尤其是那些只有两三条破枪,连美工都没有的小公司,您请靠边儿凉快,这儿没您什么事儿。

?

最后的最后

?

没有一款框架能做所有事情,因为从来就 没!有!银!弹!(提醒小白,这个词出自《人月神话》)

?

对于那种幻想用一种框架(包括付费购买的)就能解决所有问题的小屁孩,扔给他一根棒棒糖吧!

?

1 楼 zhushaolong 昨天  
怎么没有人评论
2 楼 llllmnglf 昨天  
已看完!谢谢!
3 楼 sane607 昨天  
语言很幽默,赞!
4 楼 xsh5324 昨天  
   阅  
5 楼 freezingsky 昨天  
我喜欢你的文笔风格!
6 楼 zf772835869 昨天  
力挺大漠叔
7 楼 gipqggtfnq 昨天  
我是来要棒棒糖的,每一种框架是不是万能的,跟个人技术也是有关系的,个人觉得Ext更优一些,对于那些大叫ExtJs只能做企业应用并切只知道一下全都引入并切全部初始化小屁孩子,哥把棒棒糖洗干净让给你
8 楼 white_crucifix 24 小时前  
啥叫可定制性。。。
9 楼 bitray 23 小时前  
付费后不希望技术支持吗?
10 楼 hobo212 19 小时前  
11 楼 步青龙 7 小时前  
犀利无比啊,我大赞你,顶爆你啊!
12 楼 420189155 6 小时前  
骚漠兄 哥浏览器左上是关闭
13 楼 damoqiongqiu 6 小时前  
420189155 写道
骚漠兄 哥浏览器左上是关闭

小边边你也有ITEYE
14 楼 lonyi 6 小时前  
骚漠,太J2骚了。。。
15 楼 Sorry' 5 小时前  
内心世界多么强大。
16 楼 huangjian1820 4 小时前  
很明显,javascript发展到今天,影响力和应用的复杂程度已经远超最初Brendan Eich的设计初衷(最初的js脚本干的只是表单数据校验,改变页面节点内容的一些小把式),ajax,html5等技术的进步让js的发展到了一个新的层次上,同时在面对如今纷繁复杂的前端开发工作和多人的协同工作,js在代码组织和开发模式的优化上,都需要不断的从别的语言和框架中汲取营养,由此可见,在解决MVC实现,模块化,测试驱动,数据绑定上等诸多经典问题上,诞生出了如reuireJS,AnjularJS, jade,backbone等框架,而相对前者的单兵作战,angularjs更倾向与在这些功能集中在一起实现。(理解不对还望多多指教)
17 楼 420189155 4 小时前  
damoqiongqiu 写道
420189155 写道
骚漠兄 哥浏览器左上是关闭

小边边你也有ITEYE

哥为什么不能有iteye 只要是哥出没的地方总是能见到骚漠的身影
18 楼 quitgame 1 小时前  
顶起,JavaScript 确实缺少大一统的框架,如 Java 的 Spring 一般的。
  相关解决方案