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



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

我不能用可读代码构建一个成熟的enyo应用程序,同时只使用Controls来代替Components、Kinds、Models和Collections吗

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

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

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

你能展示某些功能是如何从其中任何一个中真正缺失的,但在另一个中却存在吗?

哇。这是个大问题。

关于控件和组件,区别这两者的不仅仅是约定。控件是从组件Enyo类型继承而来的Enyo类别。控件实际上包含Components中不存在的方法和属性(专门用于处理DOM)。它们不能互换。

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

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

还有API引用,它为您提供了各种属性,因此您可以亲自查看Kinds、Components和Controls中存在(或不存在)的所有属性。

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

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

集合和模型对于Enyo来说是相当新的,从Enyo 2.4开始。他们的工作是保存数据(集合是一组模型的一个或多个实例)。模型通常包含JavaScript或Enyo对象,而不是组件或控件。

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

扩展一下Art的答案:您当然可以在没有模型和集合的情况下构建一个功能齐全、可维护的应用程序。这些类型有助于2.4版中的数据绑定基础结构。如果你不想使用这些功能,你可以在2.2版本上构建,只使用Controls及其子类(例如enyo.Input)

关于组件,您可以在不创建自己的组件的情况下轻松构建enyo,但您无法避免使用,因为它是Control原型层次结构的一部分。正如Art所说,组件和控制之间的区别不仅仅是约定。组件类型有助于组件实例的组合。控件将其扩展为支持在DOM及其包含层次结构中进行渲染。请参阅我的Enyo Daily系列文章中的一些(稍微过时的)细节。

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

最新更新