Что предпочтительный путь состоит в том, чтобы связать стили CSS с виджетами GWT (использующий UiBinder)?

От страницы GWT (http://code.google.com/webtoolkit/doc/latest/DevGuideUiCss.html#cssfiles) это упоминает 2 пути (для современного приложения):

  • Используя CssResource, содержавший в ClientBundle.
  • Используя встроенный элемент в шаблоне UiBinder.

Современные приложения GWT обычно используют комбинацию CssResource и UiBinder.

Таким образом, мой вопрос, когда я должен использовать файл CSS и создать CssResource для него, и когда я должен определить стили непосредственно в файле ui.xml с помощью ? Есть ли какая-либо импликация производительности (т.е. размер ресурса для загрузки на клиенте) с любым из этих путей?

5
задан smallbec 8 June 2010 в 23:06
поделиться

2 ответа

Это не влияет на производительность - если вы укажете CSS в файле UiBinder, компилятор GWT динамически создаст CssResource на основе правил, содержащихся в вашем файле .ui.xml, и используйте это.

На самом деле все сводится к тому, хотите ли вы поделиться этим стилем в других местах вашего приложения. Если вы хотите, чтобы кнопка в Something.ui.xml имела тот же стиль, что и другая кнопка в SomethingElse.ui.xml, вам следует указать этот стиль в CssResource. В противном случае укажите стиль в файле UiBinder, и никакие другие классы не будут иметь к нему доступа.

9
ответ дан 13 December 2019 в 19:22
поделиться

Использование UiBinder, CssResource основное применение - динамическое изменение стиля. Если вы не собираетесь динамически менять стили, не тратьте время на CssResource.

Я рекомендую использовать файлы CSS. Это отделяет стиль от разметки в вашем UiBinder, что помогает сотрудничать в проекте с несколькими людьми - это особенно актуально для огромных проектов. В какой-то момент ваш файл .ui.xml может стать очень большим, а наличие в нем CSS только ухудшит ситуацию.

Вы можете легко добавить CSS файл к любому UiBinder и затем использовать его как обычно. Вот пример:

<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
    xmlns:g="urn:import:com.google.gwt.user.client.ui">

    <ui:style src="../css/StyleSheet.css" />
    ...
    ...
            <g:LayoutPanel ui:field="layoutName" styleName="{style.aCssRule}" >
    ...

Используя стиль таким образом, если вы захотите динамически изменить стиль виджета, вам просто нужно будет создать CssResource (в ClientBundle) из этого CSS файла, и вы будете готовы к работе.

2
ответ дан 13 December 2019 в 19:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: