Когда писать собственные компоненты соответствующим образом? - PullRequest
2 голосов
/ 10 сентября 2011

При разработке моих jsf-страниц я понял, что некоторые компоненты повторно используются по крайней мере дважды или трижды в разных макетах моего приложения. Например, в качестве гипотетической ситуации рассмотрим кнопку vote-up на SO, которая много раз включается в topic questions page (это не на самом деле) и (в другом макете) в каждом сообщении на странице конкретного вопроса.

Поэтому меня беспокоит то, что, поскольку некоторые из моих компонентов используются повторно дважды (в разных макетах) (например, кнопки голосования или панель параметров на сообщениях), я должен пойти с размещением разметки в пользовательских компонентах и ​​использованием эти компоненты вместо того, чтобы писать один и тот же код в более чем одном месте. Есть ли проблема с производительностью, которую следует учитывать при выборе пользовательских компонентов для часто отображаемых компонентов?

А также конвертируется ли разметка для компонентов JSF в html, во время сборки или во время рендеринга?

1 Ответ

3 голосов
/ 11 сентября 2011

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

Помимо вопросов, обсуждаемых в теме, с которой связан BalusC, я бы добавил, что основная цель расширяемости JSF - позволить разработчику максимально использовать код повторно. Еще одним преимуществом является то, что ваша страница клиента Facelet (на которой используется шаблон) будет настолько компактной и лаконичной, насколько это возможно для разметки XML.

Мой опыт показывает, что это может быть обоюдоострый меч. Вы можете потратить много времени на разработку, сидя и настраивая пользовательские компоненты, где вам было бы лучше просто «идти на компромисс» и выполнять вырезание и вставку с рабочей страницы на другую, чтобы выполнить работу. Это где ваш компромисс на самом деле. Вы действительно не хотите вступать в другой проект разработки библиотеки компонентов Faces, если хотите развернуть свое приложение в ближайшее время.

Мой совет - как можно больше игнорировать все гениальные вещи (интерактивная графика Javascript и т. Д.) И как можно больше кодировать свое приложение с помощью просто скучных базовых компонентов JSF. Получите его работу с наименее сложными компонентами, которые сделают эту работу. После того, как приложение заработает, вы можете вернуться и переработать слой представления (разметка Facelets), чтобы оптимизировать его для компонентов многократного использования или компонентов с более высокими функциями, таких как RichFaces, IceFaces, PrimeFaces или * Faces.

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