我们在GWT中开发了一个仪表板,其中包含一些自定义小部件,用于以各种图形形式显示客户的数据。我们现在希望转向更加自定义/用户特定的方法,其中登录仪表板的每个客户都可以看到仪表板的不同视角。某些用户可以使用某些小部件,有些用户可以使用不同的初始化参数。
我们正在努力寻找一种有效的策略来实现这一目标。一个潜在的解决方案是让客户端在EntryPoint加载期间请求所有这些信息,然后使用该传入配置来构建自己并进一步请求数据。更有效的解决方案还允许仅向浏览器下载与用户相关的那些小部件。
GWT是否有针对此方案的任何设计模式?如果没有,对于这种情况,什么是一个好的高级解决方案?
谢谢。
答案 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);
}
}