从 Meteor 1.2 开始,这三个框架都是官方支持的了。如果你开始一个新的 Meteor 项目,还没有确定用什么前端框架的时候,估计会遇到这个问题。
Blaze
Blaze 是这三个里最简单的,特别是用过 Handlebar 的话。几乎没有什么 learning curve ,直观、容易上手。它的问题是除非你只用 Meteor ,否则当你改用别的后端框架时,你得使用别的前端框架,所以不如另外两个应用广泛。技能市场更小。
Angular vs React
其实这两者不好放在一起比较。因为 React 只涉及 View ,而 Angular 是一个完整的前端框架。这里只是比较他们作为 View 的场景。
我曾经是一个 React 黑。因为 React 咋一看把啥都混在一起写。 HTML , CSS 和 JavaScript 混在一个文件里,搞点语法糖,取名叫 JSX 。还看到有人说“ JSX :让人无法想像的历史倒退, W3C 通过 20 年将 “布局、样式、数据” 三者分离, Facebook 只花了几个月就能合并到一起了。” 当时觉得无比赞同。也有部分原因是自己已经对 Angular 投入了很多时间学习使用。人都是这样,对你用顺手了并且擅长的工具就会更喜欢,即使有更好的新工具出来。
后来遇到好多写了多年前端的人几乎都是一致推荐 React 。 JSX 虽然刚开始看起来恶心,但还真是起到解耦和封装的作用,比只是简单地把文件分开的解耦更高级,达到逻辑了上的封装。而 Angular ,更符合后端转前端的人的思维,不同语言分开,大而全的 framework ,脏检查,双向绑定等等,都是老思维了。难怪 React 一出来基本就是压倒性的受欢迎。
React 设计的理念肯定是超过 Angular 1.0 的。 React 的组件化,单向数据流和 Virtual Dom 是前端演化的方向。据说 Angular 2.0 也会有这些。但是 Angular 2.0 居然选择 TypeScript 。个人认为这是一步臭棋,把 learning curve 又提高了。不知道他们团队怎么想的,估计以为 ES6/7 遥遥无期,和微软合作时作为交换筹码?
Meteor 可以作为 React 的一种 Flux 实现,他们两者的 Reactive 特性是很匹配的。 Angular 1.0 虽然号称也可以做到,但是实现并不理想。比如在异步时你得自己使用 $digest 来手动更新;脏检查机制给 reactivity 带来性能上的问题等等。
结论
如果不是维护历史项目,首选 React 。要快速上手 Meteor 可以先使用 Blaze 。