本文摘自知乎@尤雨溪的回答
一个框架能不能火,最关键的不是技术实现上多 nb,而是在于这个框架是否代表了一种(在其所处的时代)先进的开发理念。
举例来说,在大部分开发者都在为浏览器兼容性和设计糟糕的原生 DOM API 叫苦连天的时候,jQuery 的横空出世自然显得光彩夺目。那个年代,大家根本不把前端当应用来写,能爽快的操作 DOM 就已经足够成为王道了。jQuery 简洁的语法,华丽的链式 API,同时掩盖了各种兼容问题,能不火吗?
慢慢地,大家发现前端要做应用,光有华丽的 DOM 操作也不够,还得有应用结构。所以 Backbone 出现了,把 MVX 的概念引入了前端,让大家发现原来前端也是可以有架构的。
再接着,大家发现 Backbone 的视图层依然需要手动侦听 model 的变化做各种 DOM 操作,数据到视图的映射依然繁琐。于是大家开始推崇 MVVM 数据绑定,(其实 Knockout 是和 Backbone 差不多时间出现的,只不过由于其实现不如 Backbone 来得简明易懂,所以不如 Backbone 火),于是 Angular 火了。
不得不承认,即使是放眼全球,前端开发理念相比软件开发的其他领域,也基本上是属于一个跟随的状态。比如最近函数式编程就在对前端开发产生着巨大的冲击 - 首当其冲的就是以幂等渲染函数为核心概念的 React。由于 React 本身的函数式血脉,以它作为渲染层引入其他函数式理念变得触手可及,于是我们看见现在国外前端在研究的都是 immutability, FRP, uni-directional data flow, stateless stores, isomorphic application 之类看上去高大上的话题。
如果你现在去基于一个已经普及的理念新写一个框架,即使实现得再好,也不过是造了一个轮子。当然,造一个同类理念中最好的轮子,还是会有很多人来用,但这毕竟只是一个改进的轮子,大家不会把你当做一个划时代的东西去推崇。只有当你把一个从没在这个领域出现过的理念实现了,才能够达到 jQuery, Backbone, Angular, React 这些里程碑式的框架所达到的地位。(顺便广告下,在前后端数据通信这块,Meteor 可以算是一个里程碑式的存在,Relay 可能是下一个)
所以说到底,能不能搞出风靡的东西,一部分是眼界,一部分是时势。首先只有把眼界开拓到当前领域的边界之外,才可能做出开拓这个领域的东西。国内的前端界目前基本是处于跟随国外前端界的状况(就像国外前端界跟随整个软件开发领域一样),从眼界上来说就差了一个身位,又如何奢求能够做出划时代的东西?
另一部分的时势,就是你所实现的理念是否正好顺应了当前业界的普遍需求。太超前或是太落后,都火不了。
需要说明的是,眼界和工程实力是两个东西。单就工程实力而言,我相信国内的工程师们完全不比国外的差,差距就在眼界上。首先如贺老所说,英语水平是一个整体上限制了眼界的障碍;其次,如今国外的前端工程师受过正统 CS 理论训练的比例估计也远远高于国内;最后,国内的公司加班严重,能完成工作任务就不错了,哪里还有力气搞开源(除非把开源弄成 KPI)。所以说到底是个大环境问题。还有一个原因,就是英语足够好的就肉身翻墙了,你懂的。
作者:尤雨溪
链接:https://www.zhihu.com/question/30809709/answer/52499916
来源:知乎
网友评论