电子时代 - Vue,React,Angular2/4/5

接下来便轮到我们的主角登场了。不过与它一起登场的还有另外两名选手,都是背景深厚实力不凡的大 Boss,我先介绍它们。

React

React 是 Facebook 研发的框架。它最大的特点是使用虚拟 DOM 作为实际 DOM 的影子,这样当它判断是否需要重新渲染时,就不用费力的与 DOM 交互,而只要从 JS 内存中取出虚拟 DOM 做 diff 即可。这样做可以大大提升检查效率,提高渲染速度。

但它本质上仍然在执行脏检查,所以实际效率不太高,或者说,有明显的天花板;只是面对越来越强的计算能力,这些损失浪费的表现越来越不明显。但是虚拟 DOM 也带来另外一个好处:如果重写它的实现机制,可以在任意场合实现任意类型的渲染,包括移动 App。于是便诞生了 React Native 这个项目,可以直接把基于 React 开发的 Web 项目转译成原生应用。

React 背靠 Facebook 这座大山,国内也有阿里支持,社区异常活跃,生态异常丰富。又能编译出原生应用,这是它最大的优势。

不过 React 也有缺点,导致我没有选择它:

  1. 要使用 React 必须使用丑陋的 JSX,我认为这是反标准的
  2. 它的生态虽然丰富,但是官方并没有引导,没有全家桶,各种实现参差不齐
  3. 设计上为照顾大规模企业级开发,里面有众多新概念,学习曲线非常陡峭
  4. 夹带私货,如今 Apache 基金会已经禁止使用 React

Angular 2/4/5

Angular 吸取了第一代的教训,在 Angular 2 里重写了底层逻辑,也使用虚拟 DOM 来判断是否需要重新渲染。所以 React 的优势它基本也有。之后的 v4、v5都是在 v2 基础上的改进,并没有特别大的变化。

Angular 的学习曲线就更陡峭了,应该说它从一开始就没打算走群众路线,而是直接奔着大而全的企业级开发框架去做的(因为 v1 就是这样做的并且取得了成功)——相对来说 React 表现的还有点扭捏。

另外 Angular 为了能够更好的对接大规模团队开发,选择 TypeScript 作为开发语言,一方面使得学习成本更高;另一方面也和标准化渐行渐远。这也是我不推荐它的原因。

Vue

与前面两个竞品不同,Vue 是个人作品,而且在 2013 年才开始开发。但我选择它推荐它并不是因为什么挑战大公司霸权的情怀,而是它的确设计得很棒。

1. 双向绑定效率高

问世的晚,历史包袱就少。Vue 使用 ES5 新增的 Object.defineProperty() 方法,将对象的属性转化为 getter/setter,这样我们习以为常的 this.a=1 赋值语句实际上就被改写成 this.set('a', 1),而这个操作对开发者来说是完全无感的!这样我们一方面可以正常写代码,另一方面还可以轻松的享受到双向绑定,并且是高效的没有多余动作的绑定,任何有点点洁癖或者强迫症的人都会觉得很舒服吧!

2. 模块化减缓学习曲线

初入门时,我们只需要学习 Vue 就好。如果只想实现简单的“数据<=>视图”映射,区区几行代码就足够了,非常简单。甚至可以直接拿来替换 jQuery。

之后随着项目增大,使用加深,可以慢慢的开始使用组件,使用路由,使用全局状态管理。这一系列进化都在平缓的进行。

3. 贴近标准

与大公司喜欢夹带私货,搞自有标准不同,Vue 是标准友好的。甚至连 Vue 控件,写出来都跟普通 HTML 一样。作为个人开发者,或者小公司开发人员,我不愿意介入大公司之间的角逐,我见过妖魔横行的年代,我希望标准一统天下。


小结

在代表先进生产力的 MVVM 框架里,我最终选了 Vue 作为新的主攻框架。我也把它推荐给大家。

results matching ""

    No results matching ""