Компонент против виджета

10

В Magento 2 какая разница между компонентом и виджетом? Например, есть модальный компонент и модальный виджет, оба они, кажется, делают одно и то же.

Составная часть

Компонент Modal UI реализует вторичное окно, которое открывается поверх главного окна. Он использует модальный виджет.

Виджет

Magento модальный виджет реализует вторичное окно , которое открывается в верхней части главного окна.

Виджет может быть инициализирован несколькими строками JS, где компонент требует много строк XML и все еще использует виджет. Так зачем кому-то использовать метод XML?

Бен Крук
источник

Ответы:

6

Виджет может быть инициализирован несколькими строками JS, так как компонент требует много строк XML и все еще использует виджет. Так зачем кому-то использовать метод XML?

Компонентная система пользовательского интерфейса позволяет разработчику упаковать несколько различных модулей RequireJS в конструкторы моделей представлений KnockoutJS (со связанными «удаленными» шаблонами Knockout.js), а затем использовать эти модели представлений в исходном HTML-коде страницы Magento с помощью специальная привязка Knockout.js. Каждый компонент пользовательского интерфейса также связан с набором данных на стороне сервера. Конечная цель - создать сложную часть функциональности пользовательского интерфейса, которая представляет собой не просто один гигантский грязный файл javascript, но который конечные пользователи могут включить с помощью простого <uiCompnent name="foo"/>в своем макете XML.

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

По крайней мере - это мое текущее понимание ситуации / системы. Больше контекста в моей серии компонентов пользовательского интерфейса (самостоятельная ссылка), если вам интересно

Алан Сторм
источник
Если у меня есть задача для CRUD, связанная с модальным компонентом данных примера модели, я должен использовать модальный компонент, а не модальный виджет! Правильно ? Но, кажется, это сложнее реализовать
mrtuvn
Спасибо за ответ и ссылку @ alan-storm, я обязательно их проверю. Кажется, что это намного сложнее реализовать, но я полагаю, что для большой работы это имеет больше смысла. Я дам ему несколько дней, чтобы получить больше ответов, затем приму один.
Бен Крук