我为何以全部身家押宝 meteor+react ?

2016年1月9日

5年以前,我做过一个类似的决定,全情投入到 RubyOnRails 的怀抱。当时我说:

新手初入一个领域,最明智的做法就是融入到这个领域的一群聪明人之中。Rails 给了我这样的机会,让这些人可以为我引路,否则我必然会迷失于概念的海洋...

5年后的今天,meteor+react 也给了我相同的感觉,一群我最喜欢的高手,把自己的经验融入到一套框架,并且形成了最为热闹的社区。

为何要选择 nodejs ?

首先, RubyOnRails 那么好,为什么要离开呢?这个我想引用 Wordpress 之父 Matt Mullenweg 2015年底说的一句话

JS is the future of the Web 。

RubyOnRails 有几个明显的问题:

  • 第一,基于传统的 http ”请求/响应“ 模式,让实时性应用开发变得非常困难
  • 第二,Rails 发展多年,目前已经太重。Rails 之中默认就添加了各种很复杂的同时我自己多年都不用的机制。

对应的,Nodejs 没有历史负担,一切都可以选择最佳解决方案。当初选择 RubyOnRails ,就是因为它可以极大的提高个人开发者的单兵效率。我总觉的编程也是一种创造性劳动,你应该可以轻松的,独立的表达出自己的思想。而不是是像流水线工人那样工作。幸运的是 nodejs 领域工具多( npmjs.org 是目前世界上最大的软件仓库系统),可以自由选择由轻到重的各种技术栈,满足我自己项目的需求。

等等,Nodejs 不是负责后端的吗?怎么能和 JS 画等号呢?实际情况是这样,前端目前各种构建工具,框架,包括最流行的前端(对,前端)包管理框架 npm ,其实都是基于 nodejs 的。所以现在所谓学 JS ,其实基本等价于学 Nodejs 了。这个是我非常想澄清的一点。

那为何是 meteor+react 呢?

nodejs 各种技术方案选择太多,无从下手怎么办?框架就是答案。

如果嫁给 nodejs 是既定,那么选择 meteor 和 react 这个组合其实也不是非常特立独行。到 github 上看一下 star 数量就一目了然。绝对数量上,react 对比老牌的前端神器 Jquery 和 Angular 还有不大的一点差距,但是增速上面比另两个快很多了。类似的,全栈框架 meteor 不管是绝对 star 数量还是增速都大大超越其他 nodejs 后端或全栈框架。

目前 JS 开发领域工具和方法论众多,meteor 其实是集合了一群绝顶高手,要把最优秀的开发经验融入到一套框架之中。那么这样一套最优方案,对于防止新手走错路,显然是非常有效果的。Meteor 不仅仅是一个优秀的框架,也是一伙活人,随时会把业界最新的 JS 工具和实践融入到 meteor 框架之中。

跟 Rails 相比,meteor 自带的功能少得很。 但是你可以安装 meteor 的包来进行扩展。 Meteor 自己的包仓库,目前已经有近一万个包了。另外,meteor 背靠整个 npm 生态,安装普通的 npm 包进 meteor 也是非常方便的。

全栈随动

前面吐槽了 Rails 等传统框架不适合来开发实时性强的应用,那么 meteor 的优势体现在哪里呢?应该说体现在很多方面,但是这里我想强调一点:全栈随动( Full Stack Ractivity )

基本的意思就是说,整个应用的数据已经成了”一根筋“:

  • 后端和前端数据通过实时订阅通道,自动同步
  • React 框架自身也是“随动的”,数据有变化,React 的组件界面就会自动刷新

没有写过界面的人很难理解,这两个“自动”,让复杂前端界面的开发省去了多少麻烦。

单独来说说 React

React 是写前端界面的最新最高效的方式,由 facebook 推出,并且在开源社区有广泛的支持。React 解决了前端开发的诸多痛点:例如,界面组件化问题,以及 Jquery 写多了变成一团乱麻问题等等。这些问题都是在 React 出现之前,我自己就在用各种瘸腿的方法去试图解决但是解决的很差的问题,所以 React 一出现,我就像见到了宝贝一样。

React 只是用来写界面的,要配合其他工具才能真正写出一个 Web 应用了。Facebook 官方的做法是:React 配合 Redux 来做前端,然后后端配合其他的技术来解决。Redux 很强大,但是也非常复杂。Meteor 官方给出了另一套解决方案,就是 React 配合 meteor 来使用,对初学者更加友好,而且也有了后端,这个也是 Peter 推荐的方案。

多平台通吃

另外,利用 http://cordova.apache.org/ , meteor 写成的 Web 应用,可以直接编译成 ios 或者 andriod 的应用。另外一个方案就是使用 react-native ) ,也可以让我们用 JS 就写成手机 App 。

这样,一套手艺( HTML5 ),多平台通吃,对于人力资源紧张的小团队是有巨大吸引力的。

总结

Meteor 不仅强大,而且简单,meteor 官方的人演讲的时候就说,如果你用 meteor 开发的是你人生第一个 Web 应用,我们觉得 meteor 也是适合的。同时,人们对 界面的酷炫程度要求越来越高,有了 React ,复杂界面的开发变得不再复杂。