首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Ember.js中的视图与组件

Ember.js中的视图与组件
EN

Stack Overflow用户
提问于 2013-09-03 21:19:57
回答 3查看 21.6K关注 0票数 143

我正在学习ember.js,并试图理解视图和组件之间的区别。我认为这两者都是制作可重用组件的一种方式。

来自Ember网站上的views:

Ember.js中的

视图通常只因以下原因而创建:

-When你需要复杂的用户事件处理

-When您想要创建可重用组件

来自Ember关于组件的网站:

组件是一个定制的

标记,它的行为可以使用JavaScript实现,其外观可以使用Handlebar模板来描述。它们允许您创建可简化应用程序模板的可重用控件

那么视图和组件之间的主要区别是什么呢?我更喜欢使用视图而不是组件的常见示例是什么,反之亦然?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-09-03 21:49:02

Ember.View

Ember.View当前仅限于由W3C为您创建的标签。但是,如果您想定义自己的特定于应用程序的HTML标记,然后使用JavaScript实现它们的行为呢?实际上,使用Ember.View是无法做到这一点的。

Ember.Component

这正是组件允许您做的事情。事实上,W3C目前正在研究Custom Elements规范,这是一个非常好的想法。

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的发布,现在鼓励您在大多数情况下使用组件而不是视图。

票数 170
EN

Stack Overflow用户

发布于 2014-05-22 14:01:17

答案很简单:使用组件

根据2013年8月录制的培训视频,Yehuda Kats和Tom Dale (Ember Core团队成员)告诉观众,除非你是框架开发人员,否则不要使用视图。他们对Handlebar进行了很多增强,并引入了组件,因此视图不再是必需的。视图在内部用于支持{{#if}}和{{outlet}}之类的东西。

组件还紧密地模仿了将被内置到浏览器中的Web组件标准,因此,轻松构建Ember组件有很多好处。

更新2014-11-27

现在更重要的是使用组件而不是视图,因为Ember 2.0将在输入路由时使用Routable组件,而不是控制器/视图。为了将来证明你的应用程序,最好远离视图。

资料来源:

Ember2.0之路:https://github.com/emberjs/rfcs/pull/15

  • Future-proofing your Ember1.x

票数 17
EN

Stack Overflow用户

发布于 2015-09-27 21:24:04

就目前而言-- v2.x是当前稳定的发行版--视图已经被完全弃用。It is said that views are being removed from Ember 2.0 API

因此,在Ember2.0中使用{{view}}关键字将触发一个断言:

断言失败:在Ember2.0中已删除使用{{view}}或任何基于它的路径

如果你必须在Ember2.0中使用视图,你可以使用ember-legacy-views插件,该插件将在2.4版本之前与Ember2.0兼容。

因此,总而言之-组件是现在(视图被移除)和未来-它们也将取代控制器。参见Routable Components RFC

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18593424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档