前端流行技术,拥抱还是抵制?
05 Sep 2016
Reading time ~1 minute
前端新技术
不经意间浏览到知乎上一个很热的话题: 关于「真阿当」对目前流行前端技术的批判,大家有什么看法?。因为现在类似的论战确实太多,甚至还有约战的,所以对此类话题已经审美疲劳的我差点错过这个很有意思的讨论。首先作为一名前端,对新技术充满热忱,所以总是乐于了解各种前沿技术,而且还有很多前端界的大牛都参与了这个讨论,所以瞬间我就肾上腺素飙涨,狠揉几乎困觉的双眼,把所有回答基本都过了一遍,以致最后不能自已,非得在这发表下自己的感慨。
近两年前端的发展是有目共睹的,各种框架、工具层出不穷,绝对称得上是日新月异。AngularJS、React、Vue 可以说是最火的三驾马车,因为项目原因,前两者都用过,而且也在业余时间学习过 Vue。对比之下,三者是各有千秋,并且都在努力培植自己的生态,扩大自己的阵营。
自己的库
对于前端而言,这是最好的时代,也是最坏的时代。你有数不胜数的工具、库在 github 上等待着你 “翻牌子”,同时,该翻谁的牌子呢,你要为此陷入深深的沉思。特别是初学者,面对眼花缭乱的前端大世界,往往流连忘返,好像什么都学过,又好似什么都没有。所以一批人跳出来,要你保持本心,自己造轮子吧。
很多大公司都有自己的框架,而且好像很少有其他公司在复制使用,只有极少的工具库、标准实现等在很多自由开发者、小公司项目中流传。为何,因为大公司都有自己的啊,即使没有自己特有的,也得把使用的框架改造下,写个 lite,这是为何?想想也简单,不为啥,就是 代码可控
。
那什么是编程呢?
Generally, the craft of programming is the factoring of a set of requirements into a set of functions and data structures.
回归到编程的本质,要是你连自己所用的 a set of functions
都不知道是啥东西,那还玩什么。血的教训告诉我们,轻易相信别人的后果就是连后果都没有啊!
谁不想自己发布出去的东西能牢牢掌握在自己手里,但是只有极少数的大公司做到了,而且更狠的是让其他的开发者用他们的产品,还帮着测 bug,这才叫兵不血刃。小公司也想,可是想想老板,想想自己,还是算了吧,基本上可以归结为两点原因:
-
需求紧,没时间让开发者去雕琢产品。
听说 AngularJS 现在很火,还有很多扩展库,开发产品很快。主要是 XXX 用过,那还想什么,抓紧用吧!这是很多人学习框架时的真实写照,殊不知 Vue 也很好用啊。
-
水平有限,一个成熟框架所涉及的面太广,无法全都 hold 住。
和其他人一起开发个框架吧,呵呵… 想凑个和你志同道合的人概率实在是小、小、小。
进阶
在用了一段时间的某某库后,而且产品上线了。有时间保证的前提下,有追求的程序员会想着看看数据是怎么流传的、事件又是怎么委托的,最好的办法就是看源码了。github 上有现成的,打开一看,what?prototype,怎么还能这么用?咦,这又是啥意思?函数式编程…
一大堆的不懂映入眼帘,而且很多库的作者都是大牛,写的代码都是那种一看不懂、再看熟悉、细看还不懂的代码。估计是基础不行,趁此机会恶补下,抓紧买犀牛书、红宝书,这么厚,啥,还有蝴蝶书…已卒!算了,还是不看了。周而复始!
很多人都是陷入了以上的情形,最终只能是从入门到放弃。
思考
怎样才能选择适合自己的框架,并理解甚至掌握它?
就个人经验而言,我是从 Java 转到前端的。以前刚学习 Java 时,也有一堆的框架、库,什么 SSH、MyBatis、Struts2…,而我又恰恰属于那种打破砂锅问到底的个性。更早的时候,曾经写过一段时间的文件系统驱动,所有的操作系统调用,最终还是会走到内核的接口调用。类似的,比如 Spring 框架各种控制反转、依赖注入都需要借助 Java 的反射机制。明白了这些,再看相关的源码、或者理解其设计就事半功倍了。
同样的经验对 Javascript 同样适用,其继承就是原型链,类的扩展也就是绑定 prototype,包括 monkey-patch、curry、hoc 都是为编程方便而使用的 hack 经验。再阅读相关源码时至少不会出现大段的不理解。理解框架就是由全局到局部,再由点到面的反复迭代,从理解其设计思路到吸取其编程经验的过程。
说到这,大家也许明白了,我看框架,更看重的是它的设计思路、编程的方法论。因为任何框架分解到原子操作,都是最基本的语义语法。唯一不变的就是变化,所以拥抱变化、理解变化、控制变化。
回归到标题的问题:前端流行技术,拥抱还是抵制?每个人心里都有自己的答案,我只想说,不排斥、不迎合、不放弃。
PS. 能看到这里的都是好汉呐!抬头一看,已然丑时,看来自己真是丑。哎,抓紧睡觉!
PS. 又爬起来了,囧… 补充一句,这两天在整理一份校招试卷,通篇都没敢考框架,除了最后一题 “谈一谈你所接触过的前端库或者框架(jQuery/React/Angular/Vue…),并谈一谈对它的理解。” 这应该不算泄题吧。
alcat2008
Dreamer, Practitioner, Incomplete Front-ender