signed

QiShunwang

“诚信为本、客户至上”

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

2018-09-09 0:57:11   来源:

来自:微博@寒冬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分别给出了很大的想象空间,但我的直觉是两者似乎都不是最终答案。


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



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

●本文分类“前端”,搜索分类名可以获得相关文章。

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

本文内容的相关公众号推荐

前端开发

Web开发↓


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


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

var first_sceen__time = (+new Date()); if ("" == 1 && document.getElementById('js_content')) { document.getElementById('js_content').addEventListener("selectstart",function(e){ e.preventDefault(); }); } (function(){ if (navigator.userAgent.indexOf("WindowsWechat") != -1){ var link = document.createElement('link'); var head = document.getElementsByTagName('head')[0]; link.rel = 'stylesheet'; link.type = 'text/css'; link.href = "//res.wx.qq.com/mmbizwap/zh_CN/htmledition/style/page/appmsg_new/winwx3ec991.css"; head.appendChild(link); } })();
寒冬winter

赞赏

长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

阅读
分享到 :