即日起在codingBlog上分享您的技术经验即可获得积分,积分可兑换现金哦。

我眼中的前端框架jQuery,Angular,React,Vue——以及我看前端架构

微信 前端开发 18℃ 0评论

来自:微博@寒冬winter

作者:寒冬winter

链接:http://weibo.com/p/1001603924826640228007

阿当讲我那个视频ppt看不清,又太长,所以写文总结一下。

jQuery的意义在我看来和他自己说的主要是两点:一是更好的API,二是兼容。这两点JQ做到了极致,在上一个时代,这两点恰好是前端最痛的两个点,所以它成功了。


不过到了移动时代,一是web平台的api有了大幅度演进,又有es6的新特性,这些新的API,我认为设计水平是远远超过JQ的。而移动端的兼容问题更加复杂,JQ所创造的shiv方式,是没办法照顾到移动端的适配需求的,比如说单单屏幕适配这一条,就这么复杂:http://www.html-js.com/article/2589


近年有一点好现象,就是前端逐渐开始有人重视架构这件事了,Angular(指1代)在我看来最大的特色是directive对html语法的扩展能力和MVVM架构,MVVM微软的架构师2005年搞出来的,至今在UI架构方面,我还没有见到超过这个的架构,但是Angular的问题也很明显,一是它很重,二是directive离了angular,就完全没法复用。


后面就是React了,React(泛指)有意思的东西很多:React Native,GraphQL,jsx,UI组件化,flux。其实每一样都很有想象空间。有让我很兴奋的,比如RN和GraphQL(虽然两者的实现都糟透了)分别代表了向客户端和服务端的延伸,也有让我觉得完全是垃圾的,比如flux,我认为只是把所有的耦合中间用类似事件的形式弄到了dispatcher上,完全是自欺欺人。总的来说,我觉得这个体系蕴含了各种nb的思想,但有点过于封闭,fb想要的太多,其实每一点都没做透,没一点都让我觉得我思想特别好,但是实际用的话都问题多多,最后变成只能吸收下思想自己搞一套了。另外React跟MVVM半毛钱关系都没有,它既没有绑定的概念,又没有命令的概念。


最后讲小右的Vue,它是非常纯粹的一个MVVM的实现,用前端比较熟悉的事件代替了命令,实现了双向绑定。这里面有些实现细节,比如Model所有的属性变成getter/setter我是有些疑问的,但总体而言,我觉得它就是web端实现MVVM的一个自然的延伸。比起前两者,它是比较轻量的,最重要的是它是单一职责的。


从架构的角度看,前端经历了几个时代,2005-2008左右,复用基本靠ctrl-c ctrl-v,各种特效站满地,重在“能实现”,不问形式;2008-2012,复用是中心化的,各种框架,是把所有需要复用的东西塞到一个文件里,反正pc流量也足,最后jQuery胜出;2012年到现在,npm发展把复用这件事带上了正轨(虽然夹带了common js的私货),也终于开始有一点真正意义上的UI架构,沿着79年开始的MVC,几年发展过来客户端几十年走过的路。


关于前端架构发展,我的一些看法是:

1、MVVM至今仍是最先进的UI架构,目前各种所谓”创新“,我的评价基本都是“幼稚”

2、我觉得View层本身的发展没有得到应有的重视,毕竟数据绑定和架构是为了大型应用和开发效率,但是我怀疑现在有哪个公司真正在需要“大型”应用,一个Model展现到多个视图的场景真的很多吗?也可能受业务类型限制,我目前工作中遇到的这种情况,是非常少,甚至多次在客户端更新model的场景都很少。而开发效率嘛,理论上确实好的架构会提升开发效率,但是现在很多公司其实开发效率并没有卡在写代码上……你懂得。

3、UI组件化势在必行,目前最有希望的是Web component和React组件,directive基本可以出局了。

4、前端职责的扩展,GraphQL和React Native分别给出了很大的想象空间,但我的直觉是两者似乎都不是最终答案。

总结:变的不一定活,不变的肯定死。


●本文编号149,以后想阅读这篇文章直接输入149即可。

●输入m可以获取到文章目录

今日微信公号推荐↓↓↓

 


更多推荐请看15个技术类公众微信


涵盖:程序人生、算法与数据结构、黑客技术与网络安全、大数据技术、前端开发、Java、Python、Web开发、安卓开发、iOS开发、C/C++、.NET、Linux、数据库、运维等。传播计算机学习经验、推荐计算机优秀资源:点击前往《值得关注的15个技术类微信公众号

点击阅读原文,了解野狗

转载请注明:CodingBlog » 我眼中的前端框架jQuery,Angular,React,Vue——以及我看前端架构

喜欢 (0)or分享 (0)
发表我的评论
取消评论

*

表情
(6)个小伙伴在吐槽
  1. /发呆
    柴柴2016-05-21 04:49 回复
  2. /撇嘴jquery还要学习嘛
    三只羊2016-05-21 05:58 回复
  3. 感觉作者牛逼哄哄屌炸天的样子
    王振荟2016-05-21 09:23 回复
  4. 这篇文章写得好犀利,不过我喜欢😄
    Better2016-05-21 10:31 回复
  5. 我只是觉得Vuex是为了模仿数据单向流而东施效颦。既然Vue本身就是支持双向绑定,那么只需要把根组件当成Angular的$rootScope,引入services层(单例模式,采用ES6的类实现)作为组件通信的部分实现,事件触发广播监听这种的话就可以尽量少用了。在MVVM框架用事件,虽说的确是解耦了,但是需要花多点时间去设计与理解,尤其是组件非常多的情况,真的是比较痛苦。React本身不支持双向绑定,那么全局状态管理的确是必须的,单向数据流也是必须的。
    黄梓健2016-05-21 12:04 回复
  6. 说的我心里爽!不是很懂那些说React好的人。 目前我是力撑Vue的!
    帕奇式2016-05-22 08:28 回复