EmberJS 为什么我偏爱 Ember.js 胜过 Angular 和 React.js
文章写的很老到,非常值得一看!评论也很精彩,值得一看
为什么我偏爱 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 也有自己的缺点,诸如陡峭的学习曲线,稍慢的页面渲染,框架体积较大等。已经有很多的技术文章对这些框架进行过比较了。但本文更多的是在开发实践体验上我个人的一些感受。我相信这些框架中不管选用哪一个,就技术而言都能帮你完成项目。但还有一些除此之外的因素影响到你项目的实施和进展。在考虑了各种实际情况、业务、场景之后,你就可以做出最佳的决策来启动项目了。
相关文章
- Is React.js tougher and confusing than Ember or Angular?
- A complete guide to Ember – Ember.js Tutorial
- What’s new in Angular 2.0? Why it’s rewritten – addressing few confusions
- Plus minus kind of calculation and comparison in Ember.js template, handlebars?
- MVC vs Flux – which one is better?
- Scaffolding and understanding an ember application – Ember.js Tutorial part 2
评论:
原文:https://ruby-china.org/topics/32634
EmberJS 为什么我偏爱 Ember.js 胜过 Angular 和 React.js的更多相关文章
- Angular、React.js 和Node.js到底选谁?
为了工作,程序员选择正确的框架和库来构建应用程序是至关重要的,这也就是为什么Angular和React之间有着太多的争议.Node.js的出现,让这场战争变得更加复杂,虽然有选择权通常是一件很棒的事情 ...
- React.js 小书 Lesson5 - React.js 基本环境安装
作者:胡子大哈 原文链接:http://huziketang.com/books/react/lesson5 转载请注明出处,保留原文链接和作者信息. 安装 React.js React.js 单独使 ...
- Angular和Vue.js 深度对比
Vue.js 是开源的 JavaScript 框架,能够帮助开发者构建出美观的 Web 界面.当和其它网络工具配合使用时,Vue.js 的优秀功能会得到大大加强.如今,已有许多开发人员开始使用 Vue ...
- Angular和Vue.js
Angular和Vue.js Vue.js 是开源的 JavaScript 框架,能够帮助开发者构建出美观的 Web 界面.当和其它网络工具配合使用时,Vue.js 的优秀功能会得到大大加强.如今,已 ...
- NO.05--谈一谈Angular 和 Vue.js 的对比。
几天的vue之后,给需要的盆友们带来一篇对比,也算是我近期之内业余时间的大工程,现在开始: Vue.js 是开源的 JavaScript 框架,能够帮助开发者构建出美观的 Web 界面.当和其它网络工 ...
- 前端迷思与React.js
前端迷思与React.js 前端技术这几年蓬勃发展, 这是当时某几个项目需要做前端技术选型时, 相关资料整理, 部分评论引用自社区. 开始吧: 目前, Web 开发技术框架选型为两种的占 80% .这 ...
- 2017 年比较 Angular、React、Vue 三剑客(转载)
为 web 应用选择 JavaScript 开发框架是一件很费脑筋的事.现如今 Angular 和 React 非常流行,并且最近出现的新贵 VueJS 同样博得了很多人的关注.更重要的是,这只是一些 ...
- [译] 2017 年比较 Angular、React、Vue 三剑客
原文地址:Angular vs. React vs. Vue: A 2017 comparison 原文作者:Jens Neuhaus 译文出自:掘金翻译计划 本文永久链接:github.com/xi ...
- 当今流行的 React.js 适用于怎样的 Web App?
外村 和仁(株式会社 ピクセルグリッド) React.js是什么? React.js是Facebook开发的框架. http://facebook.github.io/react/ 官网上的描述是「 ...
随机推荐
- 海思编译链编译出现__aeabi_unwind_cpp_pr1重定义怎么回事
1.用arm-hisiv100nptl-linux-gcc编译代码,结果发现报错,__aeabi_unwind_cpp_pr1重定义,在librt.a先定义,使用的海思芯片是hi3520d. 2.本来 ...
- 写一篇博文介绍JSP
一.JSP概述 JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它是由Sun Microsystems公司倡导.许多公司参与一起建立的 ...
- Autofac之类型注册
本次主要学习一下Autofac中实现类型注册的几种方式,这里并不打算一开始就从基于接口开发的服务关联切入,而是先从一个简单的类型注册来学起,虽然实际开发中可能不会这么做,但是个人感觉从这里学起理解能能 ...
- [Freemarker]自定义时间戳函数
使用freemarker的web项目经常需要用在Url后面加上时间戳来保证资源不被缓存,我们可以自定义方法实现时间戳. 先看freemarker配置信息: <bean id="free ...
- mac上sed -i 执行失败报错
比如说我要替换version.txt文件中的version=1.1 为version=1.2,比如test.txt文件内容如下: version=1.1 此时我们会使用sed来替换,如果是涉及比较多的 ...
- 使用jEnv在Mac/Linux环境配置多版本Java
jEnv 是什么? 先来看一下官方介绍 jEnv is a command line tool to help you forget how to set the JAVA_HOME environm ...
- 铁大Facebook隐私保护NABCD
隐私保护功能: N:满足了用户保护自己隐私信息的需求 A:对每一项用户可能需要保护的信息,我们都会添加仅自己可见.指定人可见.部分人可见或所有人可见设置 B:让用户的信息受到更全面的保护,而不仅仅是对 ...
- 001-ADO.NET
Web.config <connectionStrings> <add name="connStr" connectionString="server= ...
- StrictRedis
StrictRedis对象⽅法 通过init创建对象,指定参数host.port与指定的服务器和端⼝连接,host默认为localhost,port默认为6379,db默认为0 sr = Strict ...
- 学习DButils笔记
DBUtills: *********************** 1:创建对象:QueryRunner的对象,其中创建的方式有两种: ①QueryRunner qr = new QueryRunne ...