我应该将 GWT 应用程序的静态文件放在哪里?war 文件夹还是 public 文件夹?

StackOverflow https://stackoverflow.com/questions/1502166

我有一些 JavaScript 文件、一个主 HTML 文件、一个主 CSS 文件以及一些导入到主文件中的 CSS 文件。

据我所知,我可以将静态文件放在两个地方:a)“战争”文件夹;或 b) “公共”文件夹。

放置静态文件的最佳位置在哪里?这两个地方的待遇有区别吗?关于这个问题有“最佳实践”吗?

有帮助吗?

解决方案

2点的位置之间的差别是,在公共文件夹中的文件被GWT编译到“你的模块”文件夹中的“战争”的文件夹复制。这是如果(通过谷歌插件到谷歌应用服务引擎例如)部署“战争”从“公共”文件夹中的文件不是在顶层的装置。

例如,如果你有一个名为“MyModule的” GWT模块的“公共”文件夹中的index.html,然后将它部署到www.example.com它看起来如下,您需要通过访问它:

www.example.com/mymodule/index.html

如果您在“战争”文件夹中的index.html,您可以:

www.example.com/index.html

综述。您的着陆页应该是在“战争”的文件夹。通过登陆页面使用的资源文件,也可以在这里(CSS,图像)存储。了在任何GWT模块文件称为(或代码,如图片)的任何其他资源文件应被存储在相关的GWT模块的“公共”文件夹中。

其他提示

在GWT工作的新的方法是使用战争文件夹。

但是,如果你的项目是其在GWT应用程序中使用,那么你应该把资源公用文件夹可重用部件库。编译器将确保该文件被自动包括在生成的包。

在我看来,这取决于您的要求,但让我们首先从一个口语示例开始......

我找到了 文档 (应该是 GWT 2.6.0)关于这一点是不正确的或至少是不完整/令人困惑的。照我看来 (我不是大师,所以如果我的调查有误,请纠正我!)我正在看以下内容 示例项目结构

myproj/
  src/my/gwtproj/
     client/
       img/
         foo1.png
       AppClientBundle.java
       foo2.png
     public/
       img/
         foo3.png
       foo4.png
  war/
    img/foo5.png
    foo6.png
  .classpath
  .project

想象一下,我们可能(或可能不需要)在某些情况下需要引用此类资源 AppClientBundle 接口(或其他应用程序参考上下文):

interfaces AppClientBundle extends ClientBundle {

  @Source("img/foo1.png")
  ImageResource fooImg();
}

那么看来 取决于您的要求, ,例如:

  • R.a) 这些资源(如图像)是 在应用程序代码中引用, ,例如在我们的 AppClientBundle 接口通过 @Source 注释
  • R.b) 这些资源将被 按文件夹分组, ,例如 foo2.pngimg/foo1.png
  • R.c) 这些资源应该在某些特定应用程序 URL 上下文路径之外可用,例如如果用作小部件库,例如 http://host1/gwtapp1/foo4.pnghttp://host1/gwtapp2/foo4.png
  • R.d) 这些资源需要独立于应用程序(例如外部)URL 引用,例如 http://host1/gwtapp1/foo4.pnghttp://host1/foo6.png

这是一个人可以做的事情(可能性)及其影响 R。* 多于:

  • 第1页) (据我所知一般推荐)放得好 下的文件夹结构资源 my.gwtproj.client (这里例如 foo1.png)
    • 这边走 @Source("img/foo1.png")... 工作正常
    • 在上面的文档中,他们谈到了一些 public 文件夹 (就我而言 my.gwtproj.public),但是在 Eclipse 中将其创建为包不允许这样做(因为 public 是Java保留关键字, ,但是通过创建它 Navigator 查看作品)
      • 然而,这样 @Source 上面不起作用(可能是因为这是相对的问题 AppClientBundle 文件系统位置)
      • 然而,如果资源应该在应用程序上下文下公开可用,则可能必须通过此方法来实现 public 文件夹
  • 第2页)直属“未分组”资源 myproj/war, ,例如 projdir/war/foo6.png
    • 这样它就可以在注释中使用/找到,例如 @Source
    • 并且可以通过例如在应用程序本身之外引用它 http://host1/foo6.png
  • 第3页)下的文件夹结构资源 myproj/war, ,例如 projdir/war/img/foo5.png
    • 与 P.2 相比) @Source("img/foo5.png") 不会再工作了
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top