Что нужно для JSF, когда пользовательский интерфейс может быть реализован с помощью таких библиотек JavaScript, как jQuery и AngularJS
Я читал о JSF, который является структурой пользовательского интерфейса и предоставляет некоторые компоненты пользовательского интерфейса. Но чем он лучше или отличается от числа компонентов, доступных в jQueryUI, AngularJS, ExtJS или даже в простом HTML, CSS и JavaScript.
Почему кто-то должен изучать JSF?
8 ответов
JSF для простого JSP/Servlet/HTML/CSS/JS похож на JQuery для простого JS: делайте больше с меньшим количеством кода. Чтобы взять PrimeFaces (на основе jQuery + jQuery UI) в качестве примера, просмотрите его витрину, чтобы увидеть полные примеры кода. BootsFaces (на основе jQuery + Bootstrap UI) также имеет витрину с полными примерами кода. Если вы внимательно изучите эти примеры, то увидите, что вам в основном нужен простой класс Javabean в качестве модели и файл XHTML в качестве представления.
Обратите внимание, что вы не должны рассматривать JSF как замену только одного HTML/CSS/JS, вы также должны учитывать часть сервера (в частности: JSP/Servlet). JSF устраняет необходимость во всех шаблонах сбора параметров HTTP-запросов, их преобразования / проверки, обновления значений модели, выполнения правильного метода Java для ведения бизнеса и генерации шаблонного кода HTML/CSS/JS. С JSF вы в итоге получаете страницу XHTML в качестве определения представления и класс Javabean в качестве определения модели. Это значительно ускоряет разработку.
Как и в случае каждой основанной на компонентах веб-инфраструктуры MVC, в JSF вы имеете менее детальный контроль над отображаемым HTML/CSS/JS. Добавление пользовательского кода JS не так просто, так как необходимо учитывать состояние просмотра JSF на стороне сервера (например, включение отключенной кнопки на стороне JS не приведет к активации кнопки на стороне JSF, что, в свою очередь, является огромное преимущество в безопасности). Однако, если это основной шаг вперед, тогда лучше поискать основанную на действии веб-среду MVC, такую как Spring MVC. Вы только примите во внимание, что вы должны написать весь этот код HTML / CSS / JS самостоятельно. Кроме того, если вы перейдете от Facelets к JSP, вы также упустите дополнительные возможности создания шаблонов.
С другой стороны, если у вас большой веб-сайт на основе JSP/Servlet/HTML/CSS/JS/jQuery и вы хотите реорганизовать повторяющийся шаблонный код JSP/Servlet/HTML/CSS/JS/jQuery в повторно используемые компоненты, то Одним из решений будет JSF. Пользовательские шаблоны, файлы тегов и компоненты могут помочь в этом. С этой точки зрения JSF стоит выше JSP/Servlet/HTML/CSS/JS/jQuery (и именно поэтому очень важно понять эти основы, прежде чем погрузиться в JSF).
Вы можете найти реальный стартовый проект на основе JSF здесь: Java EE Kickoff App. Вы увидите, что он содержит рядом с JSF такие же хорошие HTML5, CSS3 и jQuery.
Смотрите также:
JSF был создан для того, чтобы магазины Java не должны были изучать такие вещи, как jQuery и создавать сложные JS, а вместо этого сосредоточиться на чисто Java-стеке. В мире, где время - деньги, и множество мест уже сосредоточено на разработке Java, на одну единицу языка в стеке ускоряется обучение и обслуживание, а значит, и дешевле.
Я добавлю, что JavaScript может стать кошмаром обслуживания для больших команд, особенно если некоторые разработчики проекта не очень разбираются в вебе.
С Javascript и такими фреймворками, как jQuery, вы получаете полную гибкость и полный контроль. С ext и т. Д. Вы теряете много контроля и должны адаптироваться к структуре. С JSF вы полностью теряете контроль и должны полностью адаптироваться к среде. Вы задействованы в жизненных циклах и т. Д. И, наконец, у вас нет контроля, когда можно сделать вызов серверу, а где нет. Если вы хотите сделать что-то особенное, вы находитесь в очень тяжелом положении. А в мире JSF даже такие базовые вещи, как сортировка таблицы по нескольким столбцам или поля, в которых можно вводить только ограниченный набор символов (например, числовое поле), считаются "специальными".
Однако, чем больше у вас гибкости, тем больше ошибок или плохих действий вы можете совершить. Высокая гибкость работает только с очень умными программистами, другие превратят проект в неуправляемый кошмар.
Но с JSF и его ограниченной гибкостью всегда есть только несколько (или даже только один) правильный способ сделать что-то. Вы очень ограничены, вы не можете делать ярлыки, вы должны писать больше XML и т. Д. - но при адаптации к стандарту, есть лучший контроль над кодом, который будут создавать неопытные или неопытные программисты. В результате крупные корпорации любят JSF, потому что для них это "безопаснее".
Когда я перешел из GWT в JSF, я был шокирован, сколько вещей, которые были для меня естественными, считалось очень нетипичными, и насколько простых вещей было так трудно достичь. Более того, даже внесение самых маленьких изменений, таких как добавление знака ":" после метки, которое в приложении с поддержкой GWT/jQuery будет изменять одну функцию, генерирующую метку, требует изменения десятков файлов с локализованными свойствами, которые даже не рассматривались кто-нибудь кроме меня странно...
Преимущества использования JSF не только в генерации xhtml + css + js. Иногда JSF накладывает ограничение на разметку, которую вы можете генерировать, как и любая основанная на компонентах инфраструктура. Но JSF не только для этого, его жизненный стиль очень помогает. После проверки ввода он может обновить модель и синхронизировать компоненты на стороне сервера без каких-либо усилий. вы просто говорите: "что бы пользователь здесь ни вводил, проверьте, является ли оно числом, если да, сохраните его в свойстве YY в объекте XX", и JSF сделает все это.
Так что да, вы все еще можете использовать JQuery, JS и т. Д. Но JSF дает много преимуществ, когда речь идет о написании кода на стороне сервера, и избавляет вас от множества проблем.
Я категорически не согласен, что JSF добавляет что-нибудь. Это только добавляет накладных расходов. Работа с пользовательским интерфейсом на сервере - самая нелепая вещь, которую я когда-либо слышал. И javascript для больших команд отлично работает - это называется повторным использованием кода.
Просто оберните jquery в некоторые теги jsp, это все, что вам нужно, и все, что вы сделали, и не переживайте проблемы с.shackles и масштабируемостью с помощью.jsf и richfaces.
Работая с JSF, Spring MVC, Struts, Grails, JQuery и ExtJS, я считаю, что Grails + ExtJS - это мощная комбинация.
Я бы выбрал Grails над JSF в любой день. Мне нравится полнота ExtJS как клиентской среды и библиотеки, но она идет с более крутой кривой обучения, чем JQuery.
Вот самые большие различия между jQuery и JSF:
- нет архитектуры MVC
- нет контроля состояния (сохранение даты в сеансе или разговоре, автоматическая очистка и т. д.)
- нет (по умолчанию) библиотека проверки
- нет шаблонной библиотеки
- нет продвинутой навигации / маршрутизации
- сторона клиента
jQuery никогда не предназначался для использования в качестве веб-платформы с полным стеком. Он был больше предназначен для замены низкоуровневого кода JS, так что написание JS становится проще и эффективнее при меньшем количестве строк кода.
И, таким образом, его следует в основном использовать для добавления поведения в элементы HTML.
Используя ExtJS Framework для большого веб-приложения, я знаю, как легко им пользоваться. ExtJS (Schena) лучше всего подходит для (Oracle 11g) взаимодействия с базой данных в архитектуре MVC. Представление было для визуальных / пользовательских взаимодействий. Контроллер указал "обработку" и триггеры, которые нужно было использовать из пакетов PLSQL (API для CRUD, запросов выбора SQL и т. Д.). Файлы модели и хранилища использовались для "привязки" элементов данных к средству просмотра / ввода.
ExtJS не подходит для веб-интерфейсов без интенсивного использования базы данных, где Angular JS может быть лучше.