JavaScript 求一剂 ember.js 强心针~

clc3123 · 2013年07月29日 · 最后由 mogodb 回复于 2015年03月13日 · 6777 次阅读

这里有用 ember.js 做过中型以上项目的吗?

前段时间花时间看了一下 ember 的文档,目测是个不错的框架,断断续续也把玩了几个 github 上的小项目,先说说自己的感受,顺道提几个问题:

  1. rc3 和 rc6 之间在 route 上就有蛮大的变化,用 promise 解决 ajax 异步设置 model 等问题。。。虽说改进很棒,但给我感觉是变化挺快,坑多,据说 rc 之前那更是折腾

  2. 有无 builtwith.angularjs.com 这种的展示 ember 项目的地方?想看看别人做的项目

  3. ember 的 object 模型设置很精巧,不明觉厉,但是 get 和 set 方法用得很烦很头疼。另外他的 class 方式也很棒,instance 调用一个方法的_super 很方便,但是文档里也没怎么注明使用方式,硬是 chrome devtools 里面翻查出来有 superwrapper 这么个东西。我想说的是,ember 使用上很特别(get/set),guide 文档由浅入深,但不能算是详尽,那么 angularjs 会不会相对来说好一些,更易于仅凭直觉来使用?

  4. 生成的 html 文件太泥马恐怖了。。。。btw,那么 htmlbars 是干嘛的?能让生成的模版好看点不?angularjs 的 html 看起来清爽许多。

  5. 和 jquery 配合。。。呃,这个还没怎么认真看,想问问,比如要加个跑马灯这种,是不是应该在 view 的 didInsertElement 这类的 hook 中来添加定制的 jquery 指令,而$(function(){}) 这种的就几乎用不上了?

  6. ember 里是不是每当模版中的 binding 有变化(套用文档中的话)a series of templates,也就是整页都要 repaint?还是说只有某个 child view 要 repaint?

  7. ie8 support????? ie6/7不用管了

其实我只想问第一句的。。。。。。 因为想做一个类似在线聊天实时交易的网页,选中 ember 是觉得体验上应该会很不错,简单把玩 ember 也未碰到特别 x10 头疼的问题。 另外希望用过的同学列一下自己碰到的坑,多谢。有 angularjs 经验的也给下对比。

你应该用有序列表,回答起来好歹容易有个针对性……

首先大前提是:Ember 尚未推出 1.0 正式版,所以不适合做大项目,不适合那种希望尽可能少改动的项目;另外就是 1.0 之前有个很大的工作就是有大量的文档和 API 要补全,所以等 1.0 出来之后,你这些问题基本上都应该会有官方的回答了。

接着简要回答你的 list:

  1. 不多说,你的看法没错,坑多,怕折腾的勿入
  2. http://emberwatch.com/ 值得一看,不过肯定不会有 Angular 那么多成熟项目可以参考(框架都还没正式版呢)
  3. get/set 无非就是不能像原生对象那样直接用 . 来操作呗,也没有多烦吧?整个 snippets 写起来还是一样快的,包装一层的原因是为了 observer/binding/computed properties
  4. 生成的文件……这玩意你在乎它干啥?生成的文件又不需要你管的,而且其实是有规律并可以改写的啊(大部分可以改写,深入学习下 view 的 API);另外,htmlbars 是啥?你说的是 handlebars 吗?如果是的话,handlebars 作为目前最好的模板引擎之一,不明白你说的“恐怖”之处在哪里?
  5. 跑马灯是又是神马玩意?能别整这些“通俗”名词不?我当你说的是 slides/carousel 吧,如果你是自己手写,那控制逻辑在 controller,DOM 操作在 view 这没啥可说的吧?如果你是插件,那么其实有很多选择,比如说你可以直接在 view 里调用,或者也可以搞成 helpercomponent 也是个选择,选哪个?这里面需要考虑的因素还是很不确定的,我建议你把一种功能用可能的方式都做一遍,以后你就知道该怎么选了。
  6. 这要看你是怎么写的
  7. 框架本身没问题,但是你用的东西多了,那就难说。

最后,多问 stackoverflow,国内搞 Ember 的少,水平高的更是寥寥无几,水平高又经常露头回答问题的简直是凤毛麟角了……但是 SO 不少,所以目前阶段多多利用 SO 吧。

对不起,我好像误会你了,我用的是有序列表啊,为啥发出来成无序的了?

  1. test
  2. test
  3. test
  • test
  • test
  • test

@lgn21st 出 Bug 了……

#2 楼 @nightire 果然是 bug,我收到了。

我觉得现阶段来说,Ember 最大的问题是文档真的太少了。还有就是那个正式版和 ember data 等的人耐心都快要没有了。 RC 版本前的那些版本简直可以称的上一个版本号是新学个语言,我一度怀疑那时候能学的厉害的人是不是只能通过阅读源码来学习。 然后我在一个项目尝试使用后,发现坑真的巨多,看着简单用起来巨多坑,而且问题没有地方可以找,官方那个教程就是把别人骗入门的。 总结:正式版应该就快出来了吧,万分期待的,正式版后准备尝试重写一个中型项目,总的来说对 ember 还是挺有信心的。

#4 楼 @JeskTop 我敢嚼按这个风格,正式版出来之后说不定还是每个版本大变动...

我们就是使用 ember,web 版的一个面板一个月后就正式上线了,模块挺多的一个面板,要是用其他技术不可能这么快

#4 楼 @JeskTop ember data 没准备用,因为看 discourse 也没有用,我想写几个$.ajax 用不算很痛苦的事。

#6 楼 @tyaccp_guojian 你们用 ember data 不?

#4 楼 @JeskTop 因为我是前阵子才开始翻文档的,我感觉现在的这个文档已经不错了。只不过 changelog 里面的东西,感觉 core team 还不是很有信心要添加进去,因为加进去今后变了反而误导人。因此又要看 changelog 又要看各种 gist。。。

总的来说挺喜欢 ember 的~

我是来踢馆的,楼主转 AngularJS 吧 EmberJS 有点像以前的 Prototype,叫好不叫座,最终被 JQuery 人海战术打败。 比较一下 AngularJS 和 EmberJS 的粉丝数吧,AngularJS 和当年的 JQuery 一样,强调快速入门和易用性。

#1 楼 @nightire 多谢,回复一大段,辛苦了哈

htmlbars 是 handlebars 的一个组件,据说 ember 1.1 要整合进去。我也不太懂,就看官方说不用写 bindattr???

handlebars 生成的 html 巨多的 metaphore 啥的,我猜是跟 binding 有关,好吧,忍了。就是有时 extend ember 原生 view 时加个定制 classname 想看看什么效果,然后。。。就震惊了。。。

#6 楼 @tyaccp_guojian 你们对于 ember 的 ie 支持有没有碰到过什么问题?

htmlbars 当时关注了一下,好像也是 Yahuda 开发的,目前还是实验性质的,很长一段时间估计还是用 handlebars。虽然生成的 script 标签确实有点多……

htmlbars 想做到的是,在语法上做到像 AngularJS 一样直接在 html 嵌入东西,而不用到处 bindAttr,view xxx 之类的。但我觉得作为 handlebars 的扩展,最终生成的 html 肯定还是 script 一堆。所以如果 LZ 在意生成的 html 美观的话,就不用指望这个了。

Ember 除了最近 RC4 改变了一下 controller/model setup 导致比较大的影响,剩下的都只是功能增强,不属于 break change. 其实现在已经好很多了。

@clc3123 我从到新公司到现在,用了一个月了吧,做了一个后台,因为不考虑浏览器,所以没有接触到 IE 兼容,ember-data 用到了,还有 restadapter,但是我们都是在 controller 中写方法拿数据的,因为这样比较灵活,我觉得 ember 现在也挺好上手的,虽然文档少点,而且官方的 guides 有点坑爹,一点也不详细,像是把 todos 里面的知识点讲了一遍,大部分东西都在 api 里面,但是 API 里面的内容太散;我觉得把 ObjectController, Controller, ArrayController, 还有 route 里面 setupcontroller, renderTemplate 等这些东西搞懂,再会点 JS 的话,一般应用也能搞定的

我也用的不久,刚熟练起来,对 view 这部分还不熟,感觉很多功需求没有现场解决方案,得自己写,要写出通用的模块不容易,要是结合 bootstrap 的话,可以去看看这个项目ember-bootstrap, 封装了一些常用的组件,可以少写一些 css 和 html

#9 楼 @winnie 但是掌握 1.x 后,过段时间就没用了?

#1 楼 @nightire 当初是怎么看重 ember,而不用 ng 的?

需要 登录 后方可回复, 如果你还没有账号请 注册新账号