Bra*_*ger 143 javascript handlebars.js ember.js
我正在学习ember.js,我试图理解视图和组件之间的区别.我认为两者都是制作可重用组件的一种方式.
来自Ember的网站上的观点:
Ember.js中的视图通常仅出于以下原因创建:
- 当您需要复杂处理用户事件时
- 何时想要创建可重用组件
来自Ember的组件网站:
组件是一个自定义HTML标记,您使用JavaScript实现其行为,并使用Handlebars模板描述其外观.它们允许您创建可重用的控件,以简化应用程序的模板.
那么视图和组件之间的主要区别是什么?什么是一个常见的例子,我更喜欢在组件上使用视图,反之亦然?
int*_*xel 170
一个Ember.View目前仅限于由W3C的为您创建的标签.但是,如果您想定义自己的特定于应用程序的HTML标记,然后使用JavaScript实现其行为?你不能用Ember.View实际做到这一点.
这正是组件让你做的事情.事实上,W3C目前正在研究自定义元素规范,这是一个好主意.
Ember的组件实现尽可能与Web组件规范密切相关.一旦自定义元素在浏览器中广泛使用,您就应该能够轻松地将Ember组件迁移到W3C标准,并使其可以被其他框架使用,这些框架也采用了新标准.
这对我们来说非常重要,我们正在与标准组织密切合作,以确保我们的组件实施符合Web平台的路线图.
另外需要注意的是,Ember.Component实际上是Ember.View(子类),但它是完全隔离的.其模板中的属性访问权限转到视图对象,操作也以视图对象为目标.没有访问周围context或外部controller 所有上下文信息的传入,这不是Ember.View的情况,它确实可以访问它的周围控制器,例如在视图中你可以做一些类似this.get('controller')会给你的东西控制器当前与视图相关联.
那么视图和组件之间的主要区别是什么?
因此,除了组件之外的主要区别是您可以创建自己的标签,并且在将来某些时候,当自定义元素可用时,也可以在其他支持自定义元素的框架中迁移/使用这些组件,确实在某些时候是ember组件根据具体的实施案例,将使视图有些过时.
什么是一个常见的例子,我更喜欢在组件上使用视图,反之亦然?
根据上述情况,这明显取决于您的使用案例.但根据经验,如果您需要在视图中访问它的周围控制器等,请使用Ember.View,但是如果您想隔离视图并仅传入它需要工作的信息,使其与上下文无关更可重用,使用Ember.Component.
希望能帮助到你.
随着Road to Ember 2.0的发布,现在鼓励您在大多数情况下使用Components而不是Views.
Joh*_*ika 17
答案很简单:使用组件
根据2013年8月录制的培训视频,Yehuda Kats和Tom Dale(Ember核心团队成员)告诉观众不要使用视图,除非您是框架开发人员.他们对Handlebars进行了大量改进并引入了组件,因此不再需要视图.内部使用视图来支持{{#if}}和{{outlet}}等内容.
组件也非常类似于将构建到浏览器中的Web组件标准,因此为舒适地构建Ember组件提供了许多方面的好处.
更新2014-11-27
现在使用组件而不是视图更加重要,因为Ember 2.0将在输入路径时使用Routable Components,而不是控制器/视图.为了将来证明您的应用程序,最好远离视图.
资料来源:
就目前而言- v2.x作为当前的稳定版本-视图已被完全弃用。据说从Ember 2.0 API中删除了视图。
因此,{{view}}在Ember 2.0中使用关键字将触发一个断言:
断言失败:
{{view}}在Ember 2.0中已删除了使用或基于它的任何路径
如果必须在Ember 2.0中使用视图,则可以使用ember-legacy-views插件,该插件在版本2.4之前与Ember兼容。
因此,总而言之-组件是当前(删除视图)和将来-还将替换控制器。请参阅路由组件RFC。