Open mishe opened 8 years ago
jQuery的意义在我看来和他自己说的主要是两点:一是更好的API,二是兼容。这两点JQ做到了极致,在上一个时代,这两点恰好是前端最痛的两个点,所以它成功了。
不过到了移动时代,一是web平台的api有了大幅度演进,又有es6的新特性,这些新的API,我认为设计水平是远远超过JQ的。而移动端的兼容问题更加复杂,JQ所创造的shiv方式,是没办法照顾到移动端的适配需求的,比如说单单屏幕适配这一条,就这么复杂。
近年有一点好现象,就是前端逐渐开始有人重视架构这件事了,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,几年发展过来客户端几十年走过的路。
Jquery
jQuery的意义在我看来和他自己说的主要是两点:一是更好的API,二是兼容。这两点JQ做到了极致,在上一个时代,这两点恰好是前端最痛的两个点,所以它成功了。
不过到了移动时代,一是web平台的api有了大幅度演进,又有es6的新特性,这些新的API,我认为设计水平是远远超过JQ的。而移动端的兼容问题更加复杂,JQ所创造的shiv方式,是没办法照顾到移动端的适配需求的,比如说单单屏幕适配这一条,就这么复杂。
angular
近年有一点好现象,就是前端逐渐开始有人重视架构这件事了,Angular(指1代)在我看来最大的特色是directive对html语法的扩展能力和MVVM架构,MVVM微软的架构师2005年搞出来的,至今在UI架构方面,我还没有见到超过这个的架构,但是Angular的问题也很明显,一是它很重,二是directive离了angular,就完全没法复用。
react
后面就是React了,React(泛指)有意思的东西很多:React Native,GraphQL,jsx,UI组件化,flux。其实每一样都很有想象空间。有让我很兴奋的,比如RN和GraphQL(虽然两者的实现都糟透了)分别代表了向客户端和服务端的延伸,也有让我觉得完全是垃圾的,比如flux,我认为只是把所有的耦合中间用类似事件的形式弄到了dispatcher上,完全是自欺欺人。总的来说,我觉得这个体系蕴含了各种nb的思想,但有点过于封闭,fb想要的太多,其实每一点都没做透,没一点都让我觉得我思想特别好,但是实际用的话都问题多多,最后变成只能吸收下思想自己搞一套了。另外React跟MVVM半毛钱关系都没有,它既没有绑定的概念,又没有命令的概念。
vue
最后讲小右的Vue,它是非常纯粹的一个MVVM的实现,用前端比较熟悉的事件代替了命令,实现了双向绑定。这里面有些实现细节,比如Model所有的属性变成getter/setter我是有些疑问的,但总体而言,我觉得它就是web端实现MVVM的一个自然的延伸。比起前两者,它是比较轻量的,最重要的是它是单一职责的。
前端的演变
从架构的角度看,前端经历了几个时代,2005-2008左右,复用基本靠ctrl-c ctrl-v,各种特效站满地,重在“能实现”,不问形式;2008-2012,复用是中心化的,各种框架,是把所有需要复用的东西塞到一个文件里,反正pc流量也足,最后jQuery胜出;2012年到现在,npm发展把复用这件事带上了正轨(虽然夹带了common js的私货),也终于开始有一点真正意义上的UI架构,沿着79年开始的MVC,几年发展过来客户端几十年走过的路。
关于前端架构发展,我的一些看法是:
总结:变的不一定活,不变的肯定死。