Понимание Vaadin Flow / Vaadin 10 - PullRequest
0 голосов
/ 29 июня 2018

преамбула: я продвинутый разработчик Vaadin (я использовал 6, 7, и теперь все мои проекты переведены на Vaadin 8).

Я начинаю изучать Vaadin 10 / Flow, но попадаю в какие-то горячие воды.

На самом деле я борюсь с самим проектом. Чем больше я углубляюсь, тем больше я чувствую, что этот фреймворк переходит в фреймворк на основе CSS / HTML, который требует большего знания CSS / HTML, чем Java. Я имею в виду, что если вы не знаете, как работают css и html, вы больше не сможете легко использовать этот фреймворк.

Проблема в том, что я не знаю, полностью ли я здесь упускаю смысл и теряюсь в стакане воды, или это действительно совсем другая структура. Здесь я спрашиваю ваше мнение и некоторые конфронтации.

Я нахожу некоторые очень хорошие вещи, такие как @ Router и все новые навигационные парадигмы и новые компоненты Mobile First, но, к примеру, я действительно не могу найти быстрый способ создать приятный внешний вид макет без работы с CSS и HTML.

Простые вещи, сделанные с помощью Vaadin 8, теперь кажутся мне очень сложными для понимания ... как и шаблоны: работать с Vaadin 10 Designer действительно очень странно.

Надеюсь, я просто упускаю суть, и некоторые из вас могут помочь мне прояснить мои мысли.

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Я разделяю ваши опасения по поводу Vaadin Flow . Вот некоторые впечатления, которые я получил, узнав о Vaadin, изучая документацию, читая форумы, просматривая видео Vaadin Ltd на YouTube . Хотя я не привожу технические доказательства по каждому пункту ниже, это может помочь вам сориентироваться в целях и новой реальности Vaadin Flow.

Веб-браузеры созрели

Logo for the HTML5 project.

The years in developing HTML5 теперь приносят огромные выгоды.

Одна из главных целей руководителей WHATWG состояла в том, чтобы переписать спецификации с практической точки зрения программистов, пытающихся на самом деле создавать настоящие браузеры. В результате, современные браузеры имеют гораздо большее общее поведение, чем когда-либо прежде, с гораздо меньшим количеством «причуд» . В настоящее время веб-приложения ведут себя гораздо более предсказуемо во всех основных браузерах.

Кроме того, обратите внимание, что производители веб-браузеров консолидировали использование движков. Каждый крупный браузер отказался от своего собственного движка, чтобы использовать либо Apple WebCore / WebKit , либо его побочную Blink / Chromium . Даже Microsoft отказалась от собственного движка браузера Trident / EdgeHTML , а переключился на Chromium для их линейка браузеров Microsoft Edge . Итак Safari , Edge , Chrome , Opera , Brave , Vivaldi , и так что теперь все используют один и тот же движок для более близкого поведения. Только Mozilla Firefox продолжает использовать собственный движок веб-браузера, Gecko (за исключением Firefox для iOS, который использует WebKit в соответствии с политикой Apple).

Таким образом, основная нагрузка на предыдущие версии 6, 7 и 7 Vaadin, компенсирующая различия в поведении между браузерами, значительно уменьшилась. Внутренний дизайн Vaadin теперь может работать более напрямую с собственной веб-моделью HTML / CSS / DOM без необходимости создания собственного промежуточного слоя поведения.

CSS

Diagram of concentric circles showing the features of CSS 1, 2, and 3.

CSS улучшилось радикально в последние годы с CSS3 , наконец, получившим широкое распространение и широкое распространение.

В течение десятилетий эксперты говорили, что «не используют HTML table для разметки», но не предлагали макет страницы в CSS, за исключением анемичной функции float. Наконец, CSS 3 предлагает реальный макет , многофункциональный и надежный. И что еще более удивительно, очевидно, что браузеры широко поддерживают эти функции с очень совместимыми реализациями. Этими новыми технологиями размещения являются Flex-box и Grid-layout .

Flexbox

Расположите элементы в одномерной горизонтальной строке или вертикальном столбце. Управление растяжением-сжатием, расстоянием между ними, позиционированием влево-вправо и относительным выравниванием, включая базовую линию.

См. это превосходное визуальное руководство и учебное пособие .

Звучит знакомо? CSS flex-box предоставляет те же функциональные возможности, что и классы Vaadin HorizontalLayout и VerticalLayout. Действительно, в Vaadin Flow эти классы были перестроены для непосредственного использования этой функциональности CSS, а не для воссоздания такого поведения в Vaadin. Vaadin Flow изменил свою терминологию, чтобы соответствовать терминологии стандарта CSS, например, setExpandRatio становится setFlexGrow.

Посмотрите, какие версии , какие браузеры поддерживают Flexbox .

Сетка Макет

Упорядочить элементы в двумерной сетке из строк и столбцов. Функции аналогичны расположению данных в ячейках в таблице HTML. Содержимое может быть выровнено вверх-вниз или влево-вправо внутри ячейки. Содержимое может опционально охватывать несколько ячеек. Вы можете контролировать интервал пропуска и выравнивание.

См. превосходное учебное пособие на том же сайте CSS-Tricks.com, как упомянуто выше.

Звукзнакомый? Разметка CSS-сетки обеспечивает те же функциональные возможности, что и GridLayout в предыдущих версиях Vaadin. Класс GridLayout больше не создается для Vaadin Flow, но вы можете получить почти такое же поведение, используя объект Vaadin Div в сочетании с прямыми командами CSS.

Посмотрите, какие версии , какие браузеры поддерживают CSS Grid .

Roll-your-own AbsoluteLayout

В соответствующей заметке CSS теперь предусмотрена оперативная пиксельно-ориентированная компоновка. Опять же, похоже, что хорошо поддерживается во всех браузерах в единообразном вопросе. Поэтому в Vaadin Flow они решили исключить AbsoluteLayout, который предоставил эту возможность для размещения виджетов в системе координат X-Y.

Вместо AbsoluteLayout вы можете создать свой собственный простой небольшой класс макета, расширив новый компонент Div. В этом подклассе для любого данного виджета вы можете извлечь объект Element, который представляет элемент HTML для этого виджета на отображаемой веб-странице. Имея в руках Element, вы можете указать левую и верхнюю (x-y) координаты, которые должны соблюдаться.

Теперь CSS можно динамически обновлять, чтобы вы могли динамически изменять расположение или добавлять / удалять виджеты в этом макете во время выполнения.

Пример такого подкласса макета CSS Div см. Замена для AbsoluteLayout от Vaadin 8 Framework в Vaadin 10 Flow? .

Веб-компоненты

Logo for the WebComponents.org project

The emerging Веб-компоненты * Технологии 1155 * изменили правила игры, заменив GWT . Они позволяют собирать веб-страницы и веб-приложения в виде набора фрагментов, каждый из которых имеет свой собственный маленький мир HTML, CSS и DOM. Эта инкапсулированная область позволяет добавлять чанк, не затрагивая остальные чанки. Например, в именах классов и идентификаторов CSS нет коллизий пространства имен.

Это означало огромную переписку внутренних органов Ваадина. И поэтому мы должны быть терпеливыми (или просто продолжать использовать Vaadin 8), поскольку некоторые части, на которые мы опираемся в предыдущем Vaadin, постепенно добавляются в Flow. См. Страницу в руководстве по Компоненты в Vaadin 10 для сравнения v8 с v10 / 11/12 компонентами. Эта страница была обновлена. Например, MenuBar изменилось с незапланированного на ожидаемое в Ваадине 14.

С другой стороны, некоторые функции предыдущего Vaadin могут не отображаться. Но прочитайте эту страницу внимательно и исследуйте. Некоторые части, которые Vaadin ранее создавал самостоятельно, теперь прямо представлены как надежные функции HTML или CSS.

Заключение

Как и у вас, у меня смешанные чувства по поводу Vaadin Flow.

Недавние разговоры с Vaadin Ltd о «мобильности первыми» вызывают беспокойство. Это кажется косвенным из их наследия создания серьезных бизнес-приложений, приложений типа счетов-фактур корпоративного стиля, приложений на заказ / начислений, «скучного» программного обеспечения, как я его называю (и зарабатываю на жизнь), в отличие от стартапа -недельное веб-приложение с строгим дизайном и дурацкими интерфейсами.

Некоторые части, важные для корпоративных бизнес-приложений, такие как строки меню, в настоящее время отсутствуют, без хорошего обходного пути. Технологии веб-компонентов являются относительно новыми в отрасли и, вероятно, будут иметь некоторые острые углы и проблемы в следующие несколько лет. Прекрасный безопасный пузырь только для Vaadin, который мне понравился, теперь пористый, и в разработке приложений, скорее всего, потребуется немного больше CSS или других веб-технологий.

Нас другой стороны, похоже, что корпоративные / бизнес-возможности могут поступать либо изнутри Vaadin, либо извне как веб-компоненты, обернутые в объекты Vaadin. Технологии веб-компонентов и их различные полифилы не новы, и многие люди всерьез над ними работали в течение нескольких лет, и, похоже, сейчас они работают. Что касается CSS или других веб-технологий, просочившихся в Vaadin, я не возражаю узнавать немного больше о них, учитывая, насколько они надежны и хорошо спроектированы, и как это означает, что с ними может быть гораздо больше документации и стабильности, при этом Vaadin не нужно воссоздать функции в коротких браузерах.

И часть этой пористости утечки CSS / HTML может быть закрыта там, где это имеет смысл и обеспечивает удобство для программиста Vaadin. Например, я заметил на странице Vaadin-12 Releases новый Java API для выбора альтернативного стиля встроенного компонента из темы Lumo или Material для любого из компонентов, имеющих вариант, наряду с с удобными константами Java, определенными для именования этих вариантов. Пример: primaryButton.addThemeVariants( ButtonVariant.LUMO_PRIMARY ) ;. Это избавляет от необходимости обращаться к внутреннему Element и манипулировать CSS.

Я верю, что будущее Ваадина светлое. Серверный сервер приложений с возможностью отслеживания состояния, способный автоматически генерировать клиентов веб-приложений из (по большей части) не-веб-программирования, делает его удивительным инструментом в позиции, где нет прямой конкуренции (кроме Xojo Web) Редакция, использующая аналогичную архитектуру).

0 голосов
/ 29 июня 2018

Vaadin 10 придерживается той же философии предыдущих версий: реализовать пользовательский интерфейс с Java. Нет необходимости использовать HTML или JavaScript вообще. Vaadin 10 добавил некоторую поддержку шаблонов HTML, но это дополнительная функция.

Это видео поможет вам понять, Ваадин 10: https://www.youtube.com/watch?v=Un8zKzw6twM

Также полезна страница Википедии для Ваадина: https://en.wikipedia.org/wiki/Vaadin

Прочтите главу документации по миграции с Ваадина 8 на Ваадин 10 .

...