先说优点:
- ember-cli对于新手搭建一个符合要求的项目提供了很大的便利。cli这个工具开创了先河。
- 文档全面。
- model层对类型的显式声明相当于维护了一份契约,有利于维护。
然后是缺点:
-
重,特别重
用ember-cli搭了个架子,写了个简单的HelloWorld,编译之后居然要十万行……这个量级对于移动端浏览器来说,几乎是不可接受的。哪怕对于PC来说,这个开销也很大。而且打包后动辄几M的文件,只要网速稍慢,用户体验就会很差(包括ember的官网)。
-
数据流复杂到近乎冗余
ember是经典的MVC框架,从里面可以看到从后端演化过来的痕迹,比如model层类似关系型数据库表的设计,controller的存在,等等。
数据从view开始,经过controller和router(router是针对前端特点做出的变化),可能还有一些适配器adapter、序列化器serializer和转换器helper,最后到达model。这个思路很清晰,也符合MVC的特点。但是我们真的需要这么复杂的数据流吗……我们关心的只不过是让数据显示在页面上而已,为什么不直接把model映射到view上呢?
所以有了后续的MVP和MVVM。
-
逻辑分散,职责不清
从根源上说就是内聚比较差,同一份逻辑会分散到各个文件里。视图在模板里,数据同时可能在controller和router里,而且这两个并不是很能分开。而且组件的prop居然是隐式声明的……从模板里看不到数据的来源,这个是违背人的正常思维的。在这一点上,Vue的SFC明显比这个好。
-
不习惯Handlebars的语法(这条其实不算)
{{#each this.foos as |foo index|}} ...more {{/each}}
经常忘写两边的
|
导致debug半天……
越用越觉得ember是时代的眼泪,但是其中的优点被其他的框架借鉴了。