文章写的很老到,非常值得一看!评论也很精彩,值得一看

为什么我偏爱 Ember.js 胜过 Angular 和 React.js

前几天看到了这篇文章:Why I prefer Ember.js over Angular & React.js,觉得对于国内期望了解 Ember.js 的开发者来说是一个不错的介绍。于是和该文的作者 Paul Shan 联系取得翻译的授权,翻译了过来。译文如下:

从我开始写 JavaScript 已经有5年了。无论是开发项目,指导别人,还是发布文章,JavaScript 都给了我极大的满足感。感谢 JavaScript!

在过去5年里我使用过很多 JavaScript 框架,不管做后端还是前端。但 Ember 从2015年中期就从我的开发世界中消失了。幸运的是1个月前机缘凑巧我又参加了一个用 Ember 做的前端项目。起初我并不太在意这点,只把它当作不过又一个日常开发而已。但随着项目的深入我开始思考自己关于这三个前端框架的体验,并在今天把它记录下来。

声明

  • 该文并非是要抨击 Angular 或 React。
  • 该文并非要很深入探讨技术层面的部分,而是作为一个开发人员对其真实使用体验的吐露。
  • 标题中我使用了“偏爱”而非“推荐”的字眼,因为“推荐”往往要和具体项目具体场景相关,而“偏爱”则是一种更普适性的描述。

Ember 令人满意之所在

原生感受

说实话,最近几年来我对 JavaScript 越来越不满。我不喜欢有人试图用工程的模式来对待 JavaScript。我喜爱 JavaScript 就仅仅是 JavaScript 而已。这也是我为什么不喜欢 TypeScript,以及 Angular 2。我看不到任何用处来多学习另一门语言,只为了试图引入一些丑陋的类(我知道是可选的)和语法。React 至少在这一点上做的比 Angular 2 好一些,但你依旧要面对 jsx 的问题。

相反,Ember 使用了纯 JavaScript。你只用写 JavaScript。Ember 提供了很多 api,却没有额外的语法。这让我作为 JavaScript 开发者而言感觉很棒。

约定大于配置

相信我,尽可能地减少配置相关代码对你的项目将有巨大的好处。首先,代码会变得少而清爽。其次,约定将是通用的,任何新加入的开发者都能了解发生了什么。对于那些之前从没有使用过 Ember 的人来说,只要你遵循了约定来命名文件和变量,Ember 就能自己处理好剩下的事情。

所见过的最好文档

Ember guides 和 Ember API 的文档可能是我开发生涯中见过的最好技术文档。即使是一个初学者都能很容易理解并上手。Ember 的官方论坛对于解决疑问也很有帮助。

最好的构建体验

Ember-CLI 是 Ember 的一大杀器。即使 Angular 都试图借鉴 Ember 的这一工具来开发自己的 CLI。使用 ember-cli 你可以快速构建一个预定义好目录文件架构的项目,而这样的架构是经过社区的讨论和实践所验证过的。当项目开始构建时,无论团队是否对此有经验,都完全不用担心有没有遵循最佳实践的问题。对于 React 而言这里就可能存在风险,因为它只是一个库并非是一个框架

强制性的最佳实践

即使你的团队中有很棒的开发者,有时候迫于上线的压力他们也会写出坏的代码。而 Ember 会至少在某些层面上强制性地让你采取最佳实践的方式。举个例子,你不应该把业务逻辑写到模版中。Ember 的模版里只可以使用迭代 iteration 和带布尔参数的 helper 帮助方法,这样你就根本别考虑在模版里写业务逻辑的事儿了。

开发效率的提升

我知道,在三个框架里 Ember 可能是学习曲线最陡也最难学的那一个。但是一旦你掌握了它,你就能开发一个项目超快,远胜过 Angular 或 React。“约定大于配置”和 ember-cli 就是最主要的两个原因。

团队工作

如果你公司的所有团队(甚至即使有人不在公司办公)是在开发多个 Ember 项目,使用 ember-cli 构建工具,那么他们每个人的项目目录文件架构会非常相似,而且可以几乎不花费什么时间成本就进行项目的切换,并立刻投入开发和提交代码。这实际变相提高了公司实际上的开发效率。

不属于公司只属于社区

Angular 属于 Google,React 属于 Facebook。而 Ember 来自于社区,也只为了社区。Ember 核心开发团队的开发者们都来自于各自公司实际 Ember 项目的成员,这恰好是 Ember 的最大不同之处:他们不仅是框架的开发者,更是框架的使用者。这让他们能始终贴近现实,紧接地气。

友好的版本发布

我幸运地在 Angular 2 发布时已经离开了之前的 Angular 项目,但我的朋友要为项目升级到 Angular 2 头疼和抓狂了。与此相反,Ember 2 发布时没有任何变化。是的,你没听错。它没有任何变化。Ember 1.13.0 和 2.0 在使用上完全相同,因为 Ember 是采取渐进式的策略来对 1.x 开放新功能,以便让使用 Ember 的实际项目能进行完全无痛地升级。这正是 Ember 核心团队成员“不仅是框架的开发者,更是框架的使用者”的最好体现。

Ember 没有缺点了吗?

任何事物都有两面性,Ember 也不例外。Ember 也有自己的缺点,诸如陡峭的学习曲线,稍慢的页面渲染,框架体积较大等。已经有很多的技术文章对这些框架进行过比较了。但本文更多的是在开发实践体验上我个人的一些感受。我相信这些框架中不管选用哪一个,就技术而言都能帮你完成项目。但还有一些除此之外的因素影响到你项目的实施和进展。在考虑了各种实际情况、业务、场景之后,你就可以做出最佳的决策来启动项目了。

相关文章

  1. Is React.js tougher and confusing than Ember or Angular?
  2. A complete guide to Ember – Ember.js Tutorial
  3. What’s new in Angular 2.0? Why it’s rewritten – addressing few confusions
  4. Plus minus kind of calculation and comparison in Ember.js template, handlebars?
  5. MVC vs Flux – which one is better?
  6. Scaffolding and understanding an ember application – Ember.js Tutorial part 2

评论:

原文:https://ruby-china.org/topics/32634

EmberJS 为什么我偏爱 Ember.js 胜过 Angular 和 React.js的更多相关文章

  1. Angular、React.js 和Node.js到底选谁?

    为了工作,程序员选择正确的框架和库来构建应用程序是至关重要的,这也就是为什么Angular和React之间有着太多的争议.Node.js的出现,让这场战争变得更加复杂,虽然有选择权通常是一件很棒的事情 ...

  2. React.js 小书 Lesson5 - React.js 基本环境安装

    作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson5 转载请注明出处,保留原文链接和作者信息. 安装 React.js React.js 单独使 ...

  3. Angular和Vue.js 深度对比

    Vue.js 是开源的 JavaScript 框架,能够帮助开发者构建出美观的 Web 界面.当和其它网络工具配合使用时,Vue.js 的优秀功能会得到大大加强.如今,已有许多开发人员开始使用 Vue ...

  4. Angular和Vue.js

    Angular和Vue.js Vue.js 是开源的 JavaScript 框架,能够帮助开发者构建出美观的 Web 界面.当和其它网络工具配合使用时,Vue.js 的优秀功能会得到大大加强.如今,已 ...

  5. NO.05--谈一谈Angular 和 Vue.js 的对比。

    几天的vue之后,给需要的盆友们带来一篇对比,也算是我近期之内业余时间的大工程,现在开始: Vue.js 是开源的 JavaScript 框架,能够帮助开发者构建出美观的 Web 界面.当和其它网络工 ...

  6. 前端迷思与React.js

    前端迷思与React.js 前端技术这几年蓬勃发展, 这是当时某几个项目需要做前端技术选型时, 相关资料整理, 部分评论引用自社区. 开始吧: 目前, Web 开发技术框架选型为两种的占 80% .这 ...

  7. 2017 年比较 Angular、React、Vue 三剑客(转载)

    为 web 应用选择 JavaScript 开发框架是一件很费脑筋的事.现如今 Angular 和 React 非常流行,并且最近出现的新贵 VueJS 同样博得了很多人的关注.更重要的是,这只是一些 ...

  8. [译] 2017 年比较 Angular、React、Vue 三剑客

    原文地址:Angular vs. React vs. Vue: A 2017 comparison 原文作者:Jens Neuhaus 译文出自:掘金翻译计划 本文永久链接:github.com/xi ...

  9. 当今流行的 React.js 适用于怎样的 Web App?

    外村 和仁(株式会社 ピクセルグリッド)  React.js是什么? React.js是Facebook开发的框架. http://facebook.github.io/react/ 官网上的描述是「 ...

随机推荐

  1. 海思编译链编译出现__aeabi_unwind_cpp_pr1重定义怎么回事

    1.用arm-hisiv100nptl-linux-gcc编译代码,结果发现报错,__aeabi_unwind_cpp_pr1重定义,在librt.a先定义,使用的海思芯片是hi3520d. 2.本来 ...

  2. 写一篇博文介绍JSP

    一.JSP概述 JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它是由Sun Microsystems公司倡导.许多公司参与一起建立的 ...

  3. Autofac之类型注册

    本次主要学习一下Autofac中实现类型注册的几种方式,这里并不打算一开始就从基于接口开发的服务关联切入,而是先从一个简单的类型注册来学起,虽然实际开发中可能不会这么做,但是个人感觉从这里学起理解能能 ...

  4. [Freemarker]自定义时间戳函数

    使用freemarker的web项目经常需要用在Url后面加上时间戳来保证资源不被缓存,我们可以自定义方法实现时间戳. 先看freemarker配置信息: <bean id="free ...

  5. mac上sed -i 执行失败报错

    比如说我要替换version.txt文件中的version=1.1 为version=1.2,比如test.txt文件内容如下: version=1.1 此时我们会使用sed来替换,如果是涉及比较多的 ...

  6. 使用jEnv在Mac/Linux环境配置多版本Java

    jEnv 是什么? 先来看一下官方介绍 jEnv is a command line tool to help you forget how to set the JAVA_HOME environm ...

  7. 铁大Facebook隐私保护NABCD

    隐私保护功能: N:满足了用户保护自己隐私信息的需求 A:对每一项用户可能需要保护的信息,我们都会添加仅自己可见.指定人可见.部分人可见或所有人可见设置 B:让用户的信息受到更全面的保护,而不仅仅是对 ...

  8. 001-ADO.NET

    Web.config <connectionStrings> <add name="connStr" connectionString="server= ...

  9. StrictRedis

    StrictRedis对象⽅法 通过init创建对象,指定参数host.port与指定的服务器和端⼝连接,host默认为localhost,port默认为6379,db默认为0 sr = Strict ...

  10. 学习DButils笔记

    DBUtills: *********************** 1:创建对象:QueryRunner的对象,其中创建的方式有两种: ①QueryRunner qr = new QueryRunne ...