我应该将 GWT 应用程序的静态文件放在哪里?war 文件夹还是 public 文件夹?
-
19-09-2019 - |
题
我有一些 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.png
与img/foo1.png
- R.c) 这些资源应该在某些特定应用程序 URL 上下文路径之外可用,例如如果用作小部件库,例如
http://host1/gwtapp1/foo4.png
与http://host1/gwtapp2/foo4.png
- R.d) 这些资源需要独立于应用程序(例如外部)URL 引用,例如
http://host1/gwtapp1/foo4.png
与http://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")
不会再工作了
- 与 P.2 相比)