Уже перебрала множество сайтов с объяснениями и описаниями, но нет чёткости. На стеке поняла только что виды работают с тегами W3C, а компоненты могу свои создавать, но тут то и началось ещё большее WTF. Ещё там рассказывается мол компоненты более изолированы и что через вид можно получить доступ к компоненту. Не знаю может в виду среднего знания английского Я всё очень не верно поняла, но тут прошу помочь в понимании в чём разница между ними.
Ещё поразили последние приписки типа "короче с версией 2 теперь используйте в 90% компоненты и не парьтесь", встаёт вопрос а вид тогда на что теперь?
Вид и компонент довольно похожи друг на друга (по правде сказать вид это родительский класс компонента). Вид и компонент оба имеют свой собственный шаблон. За видом и компонентом находится свой собственный объект. Разница заключается в двух ключевых моментах. Во первых обработка событий — компонент сам обрабатывает именные события а вид просто напросто отдает их родительскому шаблону который в свою очередь отдает их контроллеру. Во вторых окружение — компонент полностью изолирован и может работать только с объектами которые вы ему отдадите; вид в свою очередь имеет доступ ко всем объектам доступным родительскому шаблону. С точки зрения контекста родительского шаблона вид имеет доступ к модели и контроллеру но имеет свой собственный вид. Компонент более изолированный и не имеет доступ ни к чему.
> Ещё поразили последние приписки типа "короче с версией 2 теперь используйте в 90% компоненты и не парьтесь", встаёт вопрос а вид тогда на что теперь?
Ну я не думаю что прям вот так откажутся от контроллеров и видов, так что в 10% тоже можно не парится.
View. Например нужно сделать фокус на первое поле ввода в форме на странице при ее загрузке. Или закрыть модальное окно при нажатие на Esc. Потому что эти задачи относятся к конкретному роуту.
Сomponent.
Например прогресс-бар, он может использоваться для разных вещей и имеет min, max, value.
Аватарка пользователя, потому что она может быть на разных страницах сама по себе будет выглядеть вроде такого {{user-avatar user=user}}
То есть если будет использовать больше чем в одном месте, и/или не самая простая логика, используйте компоненты. Ну то есть 90% случаев.
Если видно что можно решить задачу и через view и через component, используйте component.