在 GWT 中实现用户特定的自定义内容入口点的策略

Posted

技术标签:

【中文标题】在 GWT 中实现用户特定的自定义内容入口点的策略【英文标题】:Strategies for implementing a user specific - custom content EntryPoint in GWT 【发布时间】:2016-10-12 19:17:34 【问题描述】:

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

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

GWT 是否有适合这种情况的设计模式?如果不是,那么对于这种情况,一个好的高级解决方案是什么?

谢谢。

【问题讨论】:

【参考方案1】:

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

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);
   

【讨论】:

谢谢阿贾克斯!我们应该使用这个未来,特别是如果我们有大量的小部件。我还想知道我所描述的案例是否存在设计模式,您可以在其中为不同的用户提供不同的视图。如何设置它。据我了解,代码拆分更像是一种优化模式。

以上是关于在 GWT 中实现用户特定的自定义内容入口点的策略的主要内容,如果未能解决你的问题,请参考以下文章

GWT 同源策略解决方法?

在 SKNode 子类中实现 anchorPoint

在 gwt 中实现 REST 服务

在 Google Web Toolkit (GWT) 中实现页眉、页脚和菜单栏

python 在python中实现异常的自定义属性

在python的自定义类中实现'with object() as f'的使用