Vue、React和Angular 2.x,谁是2016年的主流?

vue、react不用多说已经成了目前比较热门的讨论话题了,angular 2.x目前已发出测试版,2016年前端的世界这三个框架中哪个会笑到最后呢?
关注者
1835
被浏览
154579
先声明,作为 Vue 的作者我有利益相关,但我尽量从客观角度说说我的看法。

主流并不一定只有一个赢家

首先,我觉得框架间的竞争并不是零和游戏。虽然解决的核心痛点有重合,但适用场景还是有区别。比如 React/Vue 这样以 view layer 为核心,可以灵活选择整体架构和工具链的框架,和 Angular 2 这样大而全一站到底的框架,各有各适合的场景。Vue 因为不需要构建也能直接用,也能用在一些比 React 更轻量的场景中。撇开场景,也有开发风格的偏好问题。有些人用 React 更有效率,有些人用 Vue 更有效率,而 C#/Java 生态圈一大群人会觉得 TypeScript 和 Angular 2 让他们更有效率。最理想的情况是大家都找到最符合自己场景需求和开发偏好的框架,所以我觉得多框架的并存是合理且有意义的,不太可能出现 Angular 2 火了就没人再用 React/Vue 的情况。

技术角度

React 和 Angular 2 都有服务端渲染和原生渲染的功能(Angular 2 只是号称会有,具体啥时候会有,好不好用还不知道)。这两个东西在对此有需求的场景下,是很有吸引力的,但实际上对此有硬需求的场景占多少百分比则是个问题。比如服务端渲染的前提是前端渲染层得用 Node.js 交给『全栈』去做,原生渲染的多端代码复用率会因应用实际需求而变化,制约它们发挥的条件还是不少的,因此我个人乐观地认为这并不会影响 Vue 在整个市场中占有一席之地。另一方面,手淘已经押宝 Weex,也不排除哪天我会搞个 Vue 服务端渲染。

性能方面,这里不深入谈了,这几个主流框架都应该可以轻松应付大部分常见场景的性能需求,区别在于可优化性和优化对于开发体验的影响。这一点上我觉得 Vue 可能是最简单的,加好 track-by 就 ok 了。React 需要 shouldComponentUpdate 或者全面 Immutable,Angular 2 需要手动指定 change detection strategy,都有一定程度的侵入性。但是从整体趋势上来说,浏览器和手机还会越变越快,框架本身的渲染性能在整个前端性能优化体系中,会渐渐淡化,更多的优化点还是在构建方式、缓存、图片加载、网络链路、HTTP/2 等方面。顺道说一句,Angular 2 压缩后的大小是 500 多 kb,在移动场景反正我是不敢用。

开发体验

这方面,我个人认为 Vue 是最容易上手,最具亲和度的。工具链方面最近刚发布了 vue-cli,1 分钟搞定 webpack 配置。Vue 组件格式只要你会 HTML/CSS/JS 就能写,你要用 coffeescript 或者 less/sass 也没问题。React 的 JSX 是道坎,但跨过去之后会有一定的生产力提升。社区工具丰富,但实在太多,配置工具麻烦。CSS in JS 也不是每个人的菜。Angular 2 目前上手配置也非常麻烦,官方正在写一个 cli,但体验如何要出来了才知道。它推荐的默认语言是 TypeScript,这个对于静态类型爱好者来说是个大优点,配合 WebStorm/VSCode 体验会很不错,但也不是所有人的菜。

社区生态
  • React 是目前最成熟也最活跃的,但有一个问题就是过于频繁的方案迭代,几个月前的最佳实践可能明天就变过去式了,而 FB 官方对于最佳实践基本是采取让社区自行发展的态度,因此社区长期处于一个百家争鸣的状态,直到今年下半年才慢慢地开始合流到了 React + react-router + redux 的主流方案,并且这两天也开始讨论工具链的最佳实践。这些东西一旦稳定下来,会进一步巩固 React 的地位。
  • Vue 的社区固然比不上 React,但也不算太小。Gitter 聊天室里有 1300 来号人,国内听说也有几百人的 QQ 群,论坛上也还算有些活跃度。社区组件也在稳步发展:vuejs/awesome-vue · GitHub 当然比起 React 来说还是小巫见大巫,希望 2016 能更进一步。比起 React 来说,Vue 的一个好处就是提供了官方推荐的 Vue + vue-router + vuex + webpack + vue-loader 的全套方案,如果你不想三个月换一套,就跟着官方推荐走;如果自己有想法,那就自己整也没问题。
  • Angular 2 的社区,目前来说基本没有,到现在连文档都没写完呢,也没法有什么生态。更伤的是 ng2 和 ng1 的生态是完全割裂的。2016 年能怎么发展,要看 Google 的社区运营做得如何,但不管怎么说 Google 的影响力在那边,群众基数还是很大的...

用户来源

这一块 @徐飞 老师分析得很具体了。当然了,在中国还有另一个制约条件,那就是 IE8,这三个框架里面只有 React 支持 IE8,所以这应该会对 React 在中国的份额有所帮助... 另外徐飞叔预测 2016 年底 Vue 能和另外两个在同一数量级,我觉得还是太乐观了,我个人觉得不太可能 =_=

说在最后

看到有人说这个题是在拍马屁。React/Angular 的作者们都不上知乎,那只能认为是在针对我了,但我是理解不了问问题的人拍我马屁有什么好处... 我知道 Vue 最近在国内被提起的比较多,难免会有人觉得是不是吹太过了,对于有这样的想法的同学我有如下建议:

1. 如果你没用过 Vue,去用一用,自然会有你自己的判断;
2. 如果你用过 Vue,觉得确实吹过头了,欢迎写文章有理有节地来批评。有批评我才能改进 Vue,我会非常感谢你。
3. 如果你用过之后觉得确实不错,欢迎你加入社区贡献一份力量,一起推动项目的发展。