JavaScript 求一剂 ember.js 强心针~

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

这里有用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经验的也给下对比。

共收到 16 条回复

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

首先大前提是: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的?

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