我正在学习ember.js,并且试图了解视图和组件之间的区别。我将两者都视为制作可重用组件的一种方式。
在Ember网站上查看:
通常仅出于以下原因在Ember.js中创建视图:
-需要复杂的用户事件处理时
-要创建可重用组件时
从Ember的组件网站上:
组件是一个自定义HTML标记,您可以使用JavaScript实现其行为,并使用Handlebars模板描述其外观。它们使您可以创建可重用的控件,以简化应用程序的模板。
那么视图和组件之间的主要区别是什么?在我偏爱使用组件上的视图而反之亦然的情况下,又有什么常见的例子呢?
一个Ember.View目前仅限于由W3C的为您创建的标签。但是,如果您想定义自己的特定于应用程序的HTML标记,然后使用JavaScript实现它们的行为?您实际上无法使用Ember.View做到这一点。
这正是组件允许您执行的操作。实际上,W3C目前正在制定“自定义元素”规范是一个好主意。
Ember的组件实现尽可能与Web组件规范保持紧密联系。一旦自定义元素是在浏览器中广泛应用,你应该能够轻松地将灰烬组件迁移到W3C标准,让他们可以通过其他框架可用,以及已经采取了新的标准。
这对我们非常重要,因此我们正在与标准机构紧密合作,以确保我们的组件实现与Web平台的路线图相匹配。
还要注意的重要一点是,Ember.Component实际上是Ember.View(一个子类),但是它是完全隔离的。其模板中的属性访问转到视图对象,并且操作也以视图对象为目标。无法访问周围context
或外部的controller
所有上下文信息,而Ember.View确实可以访问周围的控制器,例如,在视图内部您可以执行类似的操作this.get('controller')
,从而使您能够当前与视图关联的控制器。
那么视图和组件之间的主要区别是什么?
那么,除此之外组件的主要差别让你创建自己的标签,并在当未来某个时间点自定义元素都可以也迁移/使用,将支持自定义元素其他框架的组成部分,确实在某些时候灰烬成分视具体实现情况而定,视图将有些过时。
在我偏爱使用组件上的视图而反之亦然的情况下,又有什么常见的例子呢?
遵循以上内容,这显然取决于您的用例。但是根据经验,如果您需要在视图中访问其周围的控制器等,请使用Ember.View,但是如果您想隔离视图并仅传递它需要工作的信息以使其与上下文无关而且更可重用,请使用Ember.Component。
希望能帮助到你。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句