Что нужно для JSF, когда пользовательский интерфейс может быть реализован с помощью таких библиотек JavaScript, как jQuery и AngularJS - PullRequest
112 голосов
/ 12 декабря 2010

Я читал о JSF, который является структурой пользовательского интерфейса и предоставляет некоторые компоненты пользовательского интерфейса.Но чем он лучше или отличается от числа компонентов, доступных в jQueryUI, AngularJS, ExtJS или даже в простом HTML, CSS и JavaScript.

Почему кто-то должен изучать JSF?

Ответы [ 8 ]

143 голосов
/ 13 декабря 2010

JSF для простого JSP / Servlet / HTML / CSS / JS похож на jQuery для простого JS: делайте больше с меньшим количеством кода.Чтобы взять PrimeFaces (на основе jQuery + jQuery UI) в качестве примера, просмотрите его showcase , чтобы увидеть полные примеры кода. 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 .

. См. Также:

28 голосов
/ 12 декабря 2010

JSF был создан для того, чтобы магазины Java не должны были изучать такие вещи, как jQuery и создавать сложные JS, а вместо этого сосредоточились на чисто Java-стеке. В мире, где время - это деньги, а множество мест уже сосредоточено на разработке Java, на одну единицу языка в стеке ускоряется обучение и обслуживание, а значит, и дешевле.

Я добавлю, что JavaScript легко становится кошмаром обслуживания для больших команд, особенно если некоторые разработчики проекта не очень разбираются в вебе.

23 голосов
/ 25 ноября 2011

С Javascript и такими фреймворками, как jQuery, вы получаете полную гибкость и полный контроль.С ext и т. Д. Вы теряете много контроля и должны адаптироваться к структуре.С JSF вы полностью теряете контроль и должны полностью адаптироваться к среде.Вы задействованы в жизненных циклах и т. Д. И, наконец, у вас нет контроля, когда можно сделать вызов серверу, а где нет.Если вы хотите сделать что-то особенное, вы находитесь в очень тяжелом положении.А в мире JSF даже такие базовые вещи, как сортировка таблицы по нескольким столбцам или поля, в которых можно вводить только ограниченный набор символов (например, числовое поле), считаются «специальными».

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

Но, с JSF и его ограниченной гибкостью, всегда есть только несколько (или даже только один) правильный способ сделать что-то.Вы очень ограничены, вы не можете делать ярлыки, вы должны писать больше XML и т. Д. - но при адаптации к стандарту, есть лучший контроль над кодом, который будут создавать неопытные или неопытные программисты.В результате, крупные корпорации любят JSF, потому что это «безопаснее» для них.

Когда я перешел из GWT в JSF, я был шокирован, как многие вещи, которые были для меня естественны, считались крайне нетипичными исколько простых вещей было так трудно достичь.Более того, даже внесение самых маленьких изменений, таких как добавление знака «:» после метки, которое в приложении с поддержкой GWT / jQuery будет изменять одну функцию, генерирующую метку, требует изменения десятков файлов с локализованными свойствами, которые даже не рассматривалиськто-нибудь кроме меня странно ...

10 голосов
/ 29 апреля 2012

Я категорически не согласен с тем, что jsf добавляет что-либо. Это только добавляет накладных расходов. Работа с пользовательским интерфейсом на сервере - самая нелепая вещь, которую я когда-либо слышал. И javascript для больших команд отлично работает - его называют повторным использованием кода.

Просто оберните jquery в некоторые теги jsp, это все, что вам нужно, и все, что вы сделали, и не переносите проблемы с.shackles и масштабируемостью с помощью .jsf и richfaces.

9 голосов
/ 11 апреля 2012

Преимущества использования JSF не только в генерации xhtml + css + js. Иногда JSF накладывает ограничение на разметку, которую вы можете генерировать, как и любая основанная на компонентах инфраструктура. Но JSF не только для этого, его жизненный стиль очень помогает. После проверки ввода он может обновить модель и синхронизировать компоненты на стороне сервера без каких-либо усилий. вы просто говорите: «Что бы пользователь здесь ни вводил, проверьте, является ли оно числом, если да, сохраните его в свойстве YY в объекте XX», и JSF сделает все это.

Так что да, вы все еще можете использовать JQuery, JS и т. Д. Но JSF дает много преимуществ, когда речь идет о написании кода на стороне сервера, и избавляет вас от многих проблем.

6 голосов
/ 16 октября 2012

Работая с JSF, Spring MVC, Struts, Grails, JQuery и ExtJS, я считаю, что Grails + ExtJS - это мощная комбинация.

Я бы выбрал Grails над JSF в любой день. Мне нравится полнота ExtJS как клиентской среды и библиотеки, но она идет с более крутой кривой обучения, чем JQuery.

3 голосов
/ 04 июля 2017

Вот самые большие различия между jQuery и JSF:

  • нет архитектуры MVC
  • нет контроля состояния (сохранение даты в сеансе или разговоре, автоматическая очистка и т. Д.)
  • нет (по умолчанию) библиотека проверки
  • нет библиотеки шаблонов
  • нет расширенной навигации / маршрутизации
  • на стороне клиента

jQuery никогда не предназначался для использования в качестве веб-структуры с полным стеком. Он был больше предназначен для замены низкоуровневого кода JS, чтобы писать JS стало проще и эффективнее за меньшее количество строк кода.

И поэтому его следует в основном использовать для добавления поведения к элементам HTML.

2 голосов
/ 31 декабря 2016

Используя ExtJS Framework для большого веб-приложения, я знаю, как легко им пользоваться. ExtJS (Schena) лучше всего подходит для взаимодействия (Oracle 11g) с базами данных в архитектуре MVC. Представление было для визуальных / пользовательских взаимодействий. Контроллер указал «обработку» и триггеры, которые необходимо было использовать из пакетов PLSQL (API для CRUD, запросов выбора SQL и т. Д.). Файлы модели и хранилища использовались для «привязки» элементов данных к средству просмотра / ввода.

ExtJS не подходит для веб-интерфейсов без интенсивной работы с базами данных, где Angular JS может быть лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...