Рубрики
Без рубрики

Пять причин, по которым вы должны использовать Apache Wicket

Apache Wicket – это платформа веб-разработки на базе java. Я чувствую, что это привлекает не так много внимания, как… С пометкой web dev, java.

Apache Wicket – это платформа веб-разработки на базе java. Я чувствую, что это не привлекает столько внимания, сколько заслуживает. Я профессионально использую Wicket для реальных проектов в течение последних 6 лет, и мне это нравится!

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

1. Простое управление состоянием

Опыт разработки приложений Wicket очень похож на разработку настольных компьютеров. Временами вы можете почти забыть о безгосударственной природе HTTP. Это связано с тем, что в Wicket веб-страница и все ее компоненты (кнопки, текстовые поля и т.д.) Являются объектами Java, Которые поддерживают свое собственное состояние. Состояние компонентов сериализуется в сеансе пользователя и десериализуется в соответствующее время.

Проще говоря, предположим, что у вас есть форма с полями, которые пользователь должен заполнить и отправить. В приложении Wicket эта форма, ее поля и кнопка отправки – это все компоненты (объекты Java), которые создаются и добавляются на веб-страницу. При нажатии кнопки отправки:

  1. Мы автоматически получаем доступ к пользовательскому вводу, обычно в виде полей POJO.
  2. Нам не нужно подключать HTTP POST-запрос к GET-запросу.
  3. Нам также не нужно думать о заполнении полей формы представленными значениями. Это делается с помощью Модели которые являются основной концепцией калитки.

2. Стандартная интеграция с HTML

HTML в Wicket не требует каких-либо специальных тегов, в отличие от некоторых других фреймворков. На самом деле вы можете взять любой существующий HTML-код и интегрировать его в свое приложение Wicket практически без изменений. Существует только один атрибут, который необходим для подключения HTML-тегов к компонентам Wicket: wicket:id Давайте рассмотрим пример:

Roman
add(new Label("userName", getUsername()));

Идентификатор wicket:id “userName” используется для соединения HTML-элемента с компонентом Wicket. Компонент Wicket Label получит имя пользователя и отобразит div тег. Ничего страшного, если прямо сейчас это не имеет никакого смысла. Это становится второй натурой и интуитивно понятным, когда вы начинаете играть с ним.

Компоненты Wicket являются первоклассными гражданами и могут инкапсулировать свою собственную HTML-разметку/CSS/JS, как в некоторых популярных фреймворках, таких как React. Что позволяет нам создавать код с высокой степенью повторного использования.

3. Нет необходимости в Javascript (в основном)

Хорошо, очевидно, что в какой-то момент вы закончите тем, что напишете JS-код. Однако поддержка AJAX, предоставляемая Wicket, означает, что вам не нужно писать свой собственный JS-код для большинства распространенных задач. За кулисами Wicket использует jQuery и автоматически генерирует JS-код на веб-странице.

Давайте рассмотрим простой пример страницы с выпадающим списком и различными другими компонентами, которые зависят от выбора этого выпадающего списка. Когда выбор меняется, нам нужно обновить эти различные другие компоненты на странице. На самом деле для этого не требуется никакого кода Javascript .

Это делает Wicket идеальным для создания сложных интерфейсов со сложной бизнес-логикой.

4. Система событий/обмена сообщениями

События Wicket – это способ взаимодействия компонентов и страниц друг с другом. Используя эту функцию, мы можем создавать очень сложные, но несвязанные структуры компонентов . Компонент может транслировать сообщение без необходимости знать, кто получит это сообщение. Когда компонент заинтересован в определенном типе сообщения, он может просто зарегистрироваться, чтобы получать уведомления о трансляции этого сообщения.

Компонент может передавать событие критического обновления с полезной нагрузкой всем другим компонентам на странице таким образом:

send(getPage(), Broadcast.BREADTH, new CriticalUpdate(target, payload));

И если какой-то компонент заинтересован в получении Критических обновлений , он будет регистрироваться следующим образом:

public void onEvent(IEvent event) {
   if (event.getPayload() instanceof CriticalUpdate) {
      String msg = ((CriticalUpdate)event.getPayload());
      //do something with the msg
   }
}

5. Модульное тестирование

Компонентный/статусный характер Wicket означает, что мы можем писать модульные тесты для интерфейса точно так же, как мы бы писали их для уровня обслуживания или нашего уровня доступа к данным. Wicket предоставляет полезные утилиты, упрощающие написание модульных тестов.

Давайте рассмотрим пример простого сценария, который может быть не так просто протестировать в других фреймворках. У нас есть веб-страница с интерфейсом CRUD: таблица с именами дочерних элементов и кнопками удаления. Форма с текстовым полем и кнопкой для добавления новых строк в таблицу.

Мы можем написать тест, который будет отображать страницу, имитировать пользователя, заполняющего и отправляющего форму, обеспечивая правильное обновление таблицы, имитировать пользователя, нажимающего кнопку удаления, и так далее. Все это может быть выполнено с использованием чистого кода Java и JUnit, не прибегая к Selenium, Puppeteer или аналогичным библиотекам.

6. Полностью открытый исходный код

Хорошо, я назвал пять причин, но вот бонус: Wicket полностью с открытым исходным кодом, а код разработан так, чтобы его можно было легко расширять/настраивать. Всякий раз, когда вы сталкиваетесь со сценарием, в котором поведение или функциональность по умолчанию не совсем соответствуют вашим потребностям, это так же просто, как переопределить несколько методов или расширить класс, чтобы заставить его работать именно так, как вам нужно!

Вывод

Я надеюсь, вы услышали достаточно, чтобы дать Калитке попробовать. Если вам интересно узнать больше:

  1. Перейдите на официальный сайт, который содержит отличную документацию
  2. Взгляните на пример кода , который предоставляет код для многих распространенных сценариев веб-разработки.
  3. Взгляните на мой блог Coder Dreams , где я регулярно публикую статьи о Wicket и других темах веб-разработки.

Оригинал: “https://dev.to/romansery/five-reasons-you-should-use-apache-wicket-1lij”