Контрастные компоненты EnyoJS, виды, элементы управления, коллекции, модели

Изменить: более простая формулировка этого вопроса будет...

Разве я не могу создать полноценное приложение enyo с читаемым кодом, используя только элементы управления вместо компонентов, видов, моделей и коллекций?

..

Я изучаю EnyoJS, и мне еще предстоит найти четкое сравнение между компонентами, видами, элементами управления, коллекциями и моделями.

Я понимаю, что, например, Control - это Компонент, который по соглашению относится к видимому элементу DOM, с которым пользователь взаимодействует напрямую... но многие из этих различий между вышеупомянутыми типами, по-видимому, обусловлены, а не реализованы в рамках. Кажется, что любая данная идея может быть выражена как Компонент, или Коллекция, или Модель, или...

Можете ли вы четко объяснить различия API между этими типами?

Можете ли вы показать, как некоторые функции действительно отсутствуют в одном из них, но присутствуют в другом?

2 ответа

Вот это да. Это большой вопрос.

Что касается элементов управления и компонентов, это не просто соглашение, которое отличает их. Элементы управления - это Enyo Kind, который наследуется от Component Enyo Kind. Элементы управления на самом деле содержат методы и свойства (специально для работы с DOM), которые просто не существуют в компонентах. Они не взаимозаменяемы.

Документация на веб-сайте Enyo очень хорошо объясняет разницу между видами, компонентами и элементами управления.

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

Также имеется ссылка на API, которая выделяет для вас различные свойства, так что вы можете увидеть все свойства, которые существуют (и не существуют) в видах, компонентах и ​​элементах управления.

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

И, наконец, поскольку Enyo является открытым исходным кодом, вы можете посмотреть на фактический исходный код, чтобы увидеть различия.

Коллекции и модели являются довольно новыми для Enyo, начиная с Enyo 2.4. Их задача - хранить данные (коллекция - это группа из одного или нескольких экземпляров модели). Модели обычно содержат объекты JavaScript или Enyo, а не компоненты или элементы управления.

Компоненты составляют основу вашего приложения, элементы управления - это пользовательский интерфейс вашего приложения, а модели содержат данные для вашего приложения.

Немного расширив ответ Art: вы, безусловно, можете создать полностью функциональное и поддерживаемое приложение без моделей и коллекций. Эти виды помогают с инфраструктурой привязки данных в версии 2.4. Если вы не хотите использовать эти функции, вы можете использовать версию 2.2 и использовать только элементы управления и их подвиды (например, enyo.Input).

Что касается Компонентов, вы можете легко построить enyo, не создавая свой собственный Компонент, но вы не можете избежать их использования, потому что это часть иерархии прототипов Control. Как сказал Арт, разница между Компонентом и Контролем более чем условна. Вид Компонент облегчает составление экземпляров компонентов. Контроль расширяет это для поддержки рендеринга в DOM и его иерархию содержания. См. Пост из моей серии Enyo Daily для некоторых (немного устаревших) деталей.

Более конкретно, если вам не нужно ничего визуализировать в DOM, но вы хотите инкапсулировать некоторую логику в нечто модульное, используйте Component. Если вам нужен узел DOM, используйте Control или один из его производных.

Другие вопросы по тегам