Шаблон разделения кода GWT для ресурсов изображений ClientBundle - PullRequest
5 голосов
/ 16 января 2011

В моем большом проекте GWT у меня есть ClientBundle для моих ресурсов изображений.Я определил около 40 файлов GIF внутри него.(размер каждого файла составляет около 5 КБ)

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

 public static void setImageFromId (String id,final Image img) {

    //for 1.gif
    if (id.equals("1")) {
        GWT.runAsync(new RunAsyncCallback() {
            @Override
            public void onFailure(Throwable reason) {}
            @Override
            public void onSuccess() {
                img.setResource(MyImages.INSTANCE.img1()); //MyImages is the ClientBundle
            }
        });
    }             

 }

    //for 2.gif
    if (id.equals("2")) {
        GWT.runAsync(new RunAsyncCallback() {
            @Override
            public void onFailure(Throwable reason) {}
            @Override
            public void onSuccess() {
                img.setResource(MyImages.INSTANCE.img2()); //MyImages is the ClientBundle
            }
        });
    }             

   //etc. for other images 3, 4, 5, ...
   //...

 }

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

RGDS

1 Ответ

1 голос
/ 16 января 2011

Итак, вы пытаетесь избежать загрузки каждого изображения при загрузке вашей страницы.Это хорошо, если вы заранее не знаете, понадобится ли каждое изображение.

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

Попробуйте этот код:

if (id.equals("1")) {
  img.setSrc(MyImages.INSTANCE.img1().getUrl());
} else if (id.equals("2")) {
  //.. and so on.
}

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

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

...