https://ruby-china.org/topics/31451#reply43

都是大牛,或许还是vue适合小白!架不住人多啊!一个非常优秀的产品,客户百十号人,如何发展!

46楼的感想如下,

从去年开始边学边用 Ember.js 到现在一年多,业余也做一些 Ember 的技术咨询,说说我对这个框架整体的看法吧,先来优点:

  • 开箱即用 这一点是我最直观的感受,不仅可以用,而且超好用,比如无需任何配置直接写 ES6,整个人都好了很多。ember-cli除了在安装和升级项目的时候有点麻烦外,其他时候完全可以媲美 rails 的命令行工具,Ember 这一点启发了很多其他前端框架。

  • 与现有技术融合顺畅 尤其是可以直接大量借鉴现有的丰富的 jQuery 库,不知道可以省掉多少时间,少造多少没有明显收益的轮子。

  • Ember Addon 当然还是有人愿意造轮子,而且还愿意分享出来,一些复杂的场景现在都有了成熟的解决方案,比如ember-simple-authember-cp-validations,etc。以前自己写的一个select2.js的 wrapper各种别扭各种不兼容,然后我发现了ember-power-select,原生实现,好用到哭。

  • Ember-data 不只是有很多好用的 API,而是用多了之后你会不由自主地围绕 Data 来思考,因为这是 The single source of truth,而且 Ember data 也是一个极好的存储状态的地方,可以省掉不同视图间大量的状态传递和计算。

  • 大量杀手级特性 比如 Computed Property,熟读其 boolequaloneway等 APIs 代码优雅指数可获极大加成。再比如 queryParams,对URL即状态这一理念的完美实践,记得这个理念是 Yahuda Katz 在哪个演讲里提出的,个人深以为然。

接下来说说感觉不是那么良好的:

  • 学习曲线 真的不是一般的陡峭,基本上新手安装完,做完 ToDoList 了之后差不多新鲜感就过渡到就迷茫感了,老老实实去啃文档去吧。记得我开始学的时候,除了把最佳入门读物 Rock and roll with Ember.js过了一遍之外,还和一个以色列的哥们做了 5,6 次的远程结对编程,才慢慢地感觉有点头绪,真正写起来有行云流水的感觉就要到好几个月之后了。印象最深的是把后端的 snake_style 转换成 js 通用的 camelCaseStyle 就用了我3天,而那个 hook 就隐藏在文档的某个小角落里……

  • 使用场景局限 就是小项目不是不能用,而是用起来显现不出 Ember 的优势,用传统的技术比如 jQuery 也能实现的很好。这一点 @nightire 总结的很好,我就不多赘述,只是比较最近用 Ember 帮客户做了一个简单的 CRUD 的 app,感觉确实有点杀鸡焉用牛刀了。不过如果你的后端是 API-only 的那就另说了,

  • 文档(或者说缺少文档)平胸而论,官方现在的文档质量已经好很多了,但这也是很少甚至是唯一可以依赖的地方,其他方面比如书啊,教程啊要么很少要么就很过时,尤其是 Stackoverflow,上面关于 Ember 的问答大部分都「年代久远」,根本都不能看。 比如一个比较新的Contextual component特性,基本除了 RFC 和 Release Notes, 还没有看到有 blog 提到关于它的最佳实践,除非去扒开源 add-on 的源码。当然 Ember 有自己的 slack group,YouTube 上也有很多演讲,但太过分散而且效率低。所以很多时候想要真正自信地采用某个方案,还是得回去看官方文档,然后自己领悟,只有真正懂了才能形成自己的最佳实践,不然就是给自己或别人挖坑,这也算是某种程度的倒逼吧。

  • 开发进度 这一点 @nightire 也解释了,主要是这个新的 Glimmer 2的开发耽误了许多,社区追求更好的实现当然无可厚非,但客观事实就是 Ember 丧失了迅速发展的机会。想想去年这个时候(2015-11月),Angular 1已经日薄西山,2 还在无限 beta,React 的生态比现在还混乱,Vue.js 更是小众中的小众,那时候要做技术选型,作为唯一一个稳定先进的框架,有点常识的人都会认真考虑一下 Ember.js。可现在如果再选,你有不是一个而是四个成熟的选择,Ember 对那些技术决策人的吸引力不得不说小了很多,不是 hard core fan 或前端大拿,选 Ember 还是要很大决心的,这也导致了 Ember.js 至今仍然是不愠不火地发展着。虽然说做 early adopter 的感觉良好,但用的人多其实才是好事,集思广益才能加速促进。想 Redux 玩非主流的 FP,连 OO 都没搞明白的新手还不是趋之若鹜?这一点,Ember 社区真的还是要好好学习一个。

缺点说了这么多,搞得我的口气好像在批评一样,但其实不然,我个人对 Ember 的整体感觉还是瑕不掩瑜,Ember的理念还是很先进的,掌握 Ember 之后面对其他框架的确有种高屋建瓴的感觉,很多看似新鲜的东西其实深究起来在 Ember 里早就实现了。但具体到个人需求,每个人都不一样,Ember 也不是银弹能照顾到所有,所以个人还是要按需选择。我们的目标是:不追 HYPE!

Ember.js 看法,精辟的更多相关文章

  1. MVC、MVP、MVVM、Angular.js、Knockout.js、Backbone.js、React.js、Ember.js、Avalon.js、Vue.js 概念摘录

    注:文章内容都是摘录性文字,自己阅读的一些笔记,方便日后查看. MVC MVC(Model-View-Controller),M 是指业务模型,V 是指用户界面,C 则是控制器,使用 MVC 的目的是 ...

  2. 【前端】Ember.js学习笔记

    Model 在默认情况下,model钩子返回的值,会设置为关联的控制器的model属性.例如,如果App.PostsRoute通过model钩子返回了一个对象,这个对象会设置为App.PostsCon ...

  3. Ember.js 的视图层

    本指导会详尽阐述 Ember.js 视图层的细节.为想成为熟练 Ember 开发者准备,且包 含了对于入门 Ember 不必要的细节. Ember.js 有一套复杂的用于创建.管理并渲染连接到浏览器 ...

  4. Ember.js入门教程、博文汇总

    第一章 对象模型 Ember.js 入门指南——类的定义.初始化.继承 Ember.js 入门指南——类的扩展(reopen) Ember.js 入门指南——计算属性(compute properti ...

  5. 点燃圣火! Ember.js 的初学者指南

    现在,到处都可以看到复杂的 JavaScript 应用程序. 由于这些应用程序变得越来越复杂,一长串的 jQuery 回调语句,或者通过应用程序在各个点执行不同的函数调用,这些都变得无法再让人接受. ...

  6. Ember.js之动态创建模型

    本人原文地址发布在:点击这里 What problem did we meet? As ember document suggestion, we may define a model as a st ...

  7. Ember.js实现单页面应用程序

    1.1.1 摘要 单页应用程序 (SPA) 是加载单个HTML 页面并在用户与应用程序交互时动态更新该页面的Web应用程序. SPA使用AJAX和HTML5创建流畅且响应迅速的Web应用程序,不会经常 ...

  8. Ember.js系列文章

    JS前端框架之Ember.js系列文章 本文为文章索引,主要是罗列Ember.js的相关文章便于阅读. 相关演示代码:github for free. 基础篇 1. EmberJs之What|Why| ...

  9. 【JavaScript】前端开发框架三剑客—AngularJS VS. Backone.js VS.Ember.js

    摘要:透过对Github,StackOverflow,YouTube等社区进行数据收集后可知,AngularJS在各大主流社区中都是最受欢迎的,Backbone.js与Ember.js则不相伯仲.本文 ...

随机推荐

  1. c++11 强类型枚举 enum class

    在标准C++中,枚举类型不是类型安全的.枚举类型被视为整数,这使得两种不同的枚举类型之间可以进行比较.C++03 唯一提供的安全机制是一个整数或一个枚举型值不能隐式转换到另一个枚举别型. 此外,枚举所 ...

  2. Gitbook在Windows上安装

    GitBook是基于Nodejs,使用Git/Github和Markdown制作电子书的命令行工具. 1.安装Nodejs 首先,安装Nodejs,官网地址:https://nodejs.org/en ...

  3. struct与class的区别

    C++中的struct是对C中struct的扩充,它已经不再只是一个包含不同数据类型的数据结构,因为其扩充了太多功能.总的来说,C++中struct和class极其相似,比如,struct能包含成员函 ...

  4. docker制作tomcat镜像

    准备cestos镜像.tomcat.jdk cestos是docker pull下来的 在/opt/下创建docker:mkdir -p /opt/docker 把tomcat和jdk解压到docke ...

  5. Install Superset from Python3.6

    本文安装Superset大致分为以下部分: 在操作系统中安装相关依赖,我所用的操作系统为Centos6.5 安装Python3.6.6 安装Superset 详细步骤如下: 相关依赖的安装 yum i ...

  6. Java反射机制概念及应用场景

    Java的反射机制相信大家在平时的业务开发过程中应该很少使用到,但是在一些基础框架的搭建上应用非常广泛,今天简单的总结学习一下. 1. 什么是反射机制? Java反射机制是在运行状态中,对于任意一个类 ...

  7. Windows下Git Bash中VIM打开文件中文乱码

    Windows下Git Bash中VIM打开文件中文乱码,解决方法是: 步骤一 admin@DESKTOP-O99620V MINGW64 /d/项目GGE/Hard_for_GGE (master) ...

  8. vi命令撤销及恢复

    u   :插销上一步操作 Ctrl + r :恢复被撤销的上一步操作

  9. tp5命令行

    手册->命令行->自定义命令行 1.第一步,配置command.php文件 2.第二步,建立命令类文件 注意:该文件中代码,从文档中粘,以防写错. 名字啥的都不用改,就改命名空间 和 定义 ...

  10. 爬取豆瓣电影排行top250

    功能描述V1.0: 爬取豆瓣电影排行top250 功能分析: 使用的库 1.time 2.json 3.requests 4.BuautifulSoup 5.RequestException 上机实验 ...