V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
russj
V2EX  ›  前端开发

Meteor 应用开发,前端选 Blaze, Angular 还是 React?

  •  
  •   russj · 2015-11-10 22:29:06 +08:00 · 2930 次点击
    这是一个创建于 3109 天前的主题,其中的信息可能已经有所发展或是发生改变。

    从 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 。

    http://jinglei.me/angular-huan-shi-react/

    6 条回复    2015-12-15 01:56:19 +08:00
    qdwang
        1
    qdwang  
       2015-11-11 00:32:05 +08:00 via Android   ❤️ 1
    TypeScript 是好东西 楼主不懂就不要乱喷。
    cxbig
        2
    cxbig  
       2015-11-11 00:56:40 +08:00
    React 可以配 Redux , Angular2 也可以玩玩,看自己喜好。
    maxiujun
        3
    maxiujun  
       2015-11-11 01:08:55 +08:00
    如果是我,维护历史项目才会去使用 react ,因为它只解决 view 的问题。
    如果新建项目才会选择 angular 这样的完整的框架。
    angular2 不知可以用 typescript ,不爽可以用 dart 。
    如果楼组选择困难,可以尝试了解一下 ember.js 。
    russj
        4
    russj  
    OP
       2015-11-11 15:47:14 +08:00
    @qdwang 是好东西,不过得花时间来学。这个时间本可以用在其他更有意义的地方的,比如学下 Go 语言什么的
    russj
        5
    russj  
    OP
       2015-11-11 15:50:37 +08:00
    @maxiujun 我可能没有说清楚。我是指维护已经使用了 Angular 的历史项目。 React 说是光是 View ,但是它带来的整个理念对于前端来说是很先进的,向真正的工程化接近了。
    dart 连 Google 自己都不玩了。
    hbkdsm
        6
    hbkdsm  
       2015-12-15 01:56:19 +08:00
    @maxiujun

    请教下 Ember.js 有哪些坑?从 Rails 过来接触 Ember 的,目前对 Ember.js 比较着迷。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3963 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 05:06 · PVG 13:06 · LAX 22:06 · JFK 01:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.