2016-10-12 7 views
0

Мы разработали панель управления в GWT, которая содержит некоторые пользовательские виджеты для отображения данных клиента в различных графических формах. Теперь мы хотим перейти к более индивидуальному/пользовательскому подходу, когда каждый клиент, входящий в панель управления, может увидеть другую перспективу панели инструментов. Некоторые виджеты будут доступны для некоторых пользователей, для некоторых других нет и с разными параметрами инициализации.Стратегии реализации пользовательского контента EntryPoint в GWT

Мы пытаемся найти эффективную стратегию для этого. Потенциальное решение заключалось бы в том, чтобы клиентская сторона запрашивала всю эту информацию во время загрузки EntryPoint, а затем использовала эту входящую конфигурацию для самофинансирования и отправляла дальнейшие запросы на данные. Более эффективное решение также позволит загружать в браузер только те виджеты, которые относятся к пользователю.

Есть ли у GWT шаблон дизайна для этого сценария? Если нет, то каково было бы хорошее решение высокого уровня для этого случая?

спасибо.

ответ

0

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

  • Code Splitting: - Идея заключается в том, чтобы разделить определенную часть кода, и загрузить его в независимом вызове асинхронного. Используя этот подход, вы можете уменьшить размер первичного файла javascript, ускоряя загрузку начальной страницы. Этот подход позволяет GWT пропускать включение всех тех виджетов, которые имеют ссылки только внутри метода GWT.runAsync() в основном файле js. Такие виджеты и код загружаются, когда приложение запускает этот код при независимом вызове. вы можете использовать этот подход и избегать загрузки дополнительных диаграмм приборной панели на основе некоторых условий, таких как тип пользователя и так далее. Вот пример кода из GWT reference website

    public class Hello implements EntryPoint { 
    
        public void onModuleLoad() { 
    
         Button b = new Button("Click me", new ClickHandler() { 
          public void onClick(ClickEvent event) { 
    
           GWT.runAsync(new RunAsyncCallback() { 
    
            public void onFailure(Throwable caught) { 
             Window.alert("Code download failed"); 
            } 
    
            public void onSuccess() { 
             Window.alert("Hello, AJAX"); 
            } 
           }); 
          } 
         }); 
         RootPanel.get().add(b); 
        } 
    } 
    
+0

Спасибо Ajax! Мы должны использовать это будущее, особенно если у нас есть большое количество виджетов. Мне также было интересно, есть ли шаблон дизайна для описанного вами случая, где у вас могут быть разные представления для разных пользователей. Как настроить его. Разделение кода - это скорее модель оптимизации, насколько я понимаю. – SKY