【问题标题】:Making a GWT app multipage制作 GWT 应用程序多页
【发布时间】:2013-12-18 17:40:12
【问题描述】:

多页是指单独的 HTML 文件,例如 index.html、admin.html 等。

现在实现这一点的一种解决方案是在 EntryPoint 类中包含它:

 if (!Window.Location.getPath().toLowerCase().endsWith("myhtmlpage.html") {
   return;
 }

这里我想深入了解的是,我的GWT应用是什么,有主应用、管理应用等。应用nocache.js文件的趋势会变大,因此加载时间更长。

问题是,上面的代码是否会阻止已编译的 GWT 应用程序的其他部分加载应用程序的不必要部分,例如分别加载索引入口点或管理入口点的代码?

【问题讨论】:

    标签: java gwt


    【解决方案1】:

    不,您的 if/return 语句不会阻止加载任何不必要的 JavaScript 代码。

    划分 UI javascript 代码的标准方法是通过code splitting。

    模拟多个页面的标准方法是管理history & hyperlinks。基本上使用令牌来管理您的应用程序状态,并在 url 末尾使用哈希码——例如,#home、#admin。

    我喜欢的模式是以上两者的结合。对于最初不需要加载的页面,我将其隐藏在对服务器的 GWT.runAsync 代码拆分调用之后,并使用不同的历史令牌。对于我想在服务器端动态控制内容而无需重新编译 javascript 的页面,我创建了一个服务器调用,我完全控制它通过 GWT HTMLPanel 返回显示在浏览器上的 html——当然不需要重新编译只要 html 结构和对应的 HTMLPanel 代码不变。后者的另一个优势是您可以控制服务器端日志记录以跟踪页面加载统计信息。

    最后,您可能想阅读 GWT 活动和地点,来自我阅读的处理历史等的标准。

    【讨论】:

      【解决方案2】:

      对的帕特里克,

      另外,对于不在你的项目中(不是GWT)的js库,没有办法使用代码拆分的方法。因此,拆分页面可以避免您用于管理代码但不在前台使用的 js 库,如果您在页面中包含 js 并且不通过 GWT 注入它,那没关系。否则,您有责任拆分代码(有一个可供所有人使用的通用包,但每个“页面”单独加载)

      理论上,他们说,好的分割点是一个活动(但我不相信,因为我的页面中有很多活动,单独加载每个脚本可能不利于性能,所以这是一个个案分析),您可以在 compiler report 中查看拆分中包含的所有内容

      花点时间看看这个视频,它会为你省去很多麻烦 https://www.youtube.com/watch?v=0F5zc1UAt2Y

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-17
        • 2010-09-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多