实现特定于用户的策略 - GWT中的自定义内容EntryPoint

时间:2016-10-12 19:17:35

标签: gwt web-applications dashboard gwt-rpc

我们在GWT中开发了一个仪表板,其中包含一些自定义小部件,用于以各种图形形式显示客户的数据。我们现在希望转向更加自定义/用户特定的方法,其中登录仪表板的每个客户都可以看到仪表板的不同视角。某些用户可以使用某些小部件,有些用户可以使用不同的初始化参数。

我们正在努力寻找一种有效的策略来实现这一目标。一个潜在的解决方案是让客户端在EntryPoint加载期间请求所有这些信息,然后使用该传入配置来构建自己并进一步请求数据。更有效的解决方案还允许仅向浏览器下载与用户相关的那些小部件。

GWT是否有针对此方案的任何设计模式?如果没有,对于这种情况,什么是一个好的高级解决方案?

谢谢。

1 个答案:

答案 0 :(得分:0)

是的,至少有一种机制可用于满足您的要求

  • Code Splitting: - 想法是拆分特定的代码部分并将其下载到独立的异步调用中。使用此方法,您可以减少主javascript文件的大小,从而加快初始页面加载速度。这种方法允许GWT跳过包含所有那些仅在主js文件中的GWT.runAsync()方法内引用的小部件。当应用程序在独立调用中运行该代码时,会下载此类小部件和代码。您可以使用此方法,并避免根据用户类型等条件下载其他仪表板图表。以下是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);
       }
    }