对比EnyoJS组件,种类,控件,集合,模型

时间:2014-04-26 12:34:52

标签: enyo

编辑:这个问题的一个更简单的措辞就是......

我是否可以构建一个带有可读代码的完整enyo应用程序,同时仅使用控件代替组件,种类,模型和集合?

...

我正在学习EnyoJS,我还没有找到组件,种类,控件,集合和模型之间的明确比较。

我理解,例如,Control是一个按照惯例引用用户直接与之交互的可见DOM元素的组件......但是上述类型中的许多这些差异似乎是按惯例而不是强制执行框架。似乎任何给定的想法都可以表示为组件或集合或模型或......

您能清楚地解释这些类型之间的API差异吗?

你能说明某些功能是如何从其中任何一个中真正丢失但在另一个功能中存在的吗?

2 个答案:

答案 0 :(得分:1)

哇。这是一个很大的问题。

关于控件和组件,不仅仅是区分两者的惯例。控件是继承自组件Enyo种类的Enyo种类。控件实际上包含组件中不存在的方法和属性(特别是用于处理DOM)。它们不可互换。

Enyo网站上的文档很好地解释了种类,组件和控制之间的区别。

http://enyojs.com/docs/2.4.0/

还有API参考,它为您突出了各种属性,因此您可以自己查看种类,组件和控件中存在(并且不存在)的所有属性。

http://enyojs.com/docs/2.4.0/api.html#enyo.Control

最后,由于Enyo是开源的,您可以查看实际的源代码以查看差异。

从Enyo 2.4开始,收藏品和型号对于Eny​​o来说是相当新的。他们的工作是保存数据(A Collection是一组模型的一个或多个实例)。模型通常包含JavaScript或Enyo Objects,而不是组件或控件。

组件构成了应用的骨架,控件是应用的UI,而模型包含应用的数据。

答案 1 :(得分:0)

对Art的答案进行了扩展:您当然可以构建一个功能齐全且可维护的应用程序,而无需使用模型和集合。这些类型有助于2.4版中的数据绑定基础结构。如果您不希望使用这些功能,则可以在2.2版本上构建并仅使用Controls及其子类(例如enyo.Input)。

关于组件,您可以轻松构建一个enyo而无需创建自己的组件,但是您无法避免使用它们,因为它是Control的原型层次结构的一部分。正如Art所说,组件和控件之间的区别不仅仅是惯例。 Component类有助于组件实例的组合。 Control扩展了它以支持渲染到DOM及其包含层次结构中。有关(稍微过时)的详细信息,请参阅post from my Enyo Daily series

更具体地说,如果您不需要将任何内容呈现到DOM中,但是您希望将某些逻辑封装到类似于模块的内容中,请使用Component。如果您需要DOM节点,请使用Control或其衍生产品之一。