我有一些 JavaScript 文件、一个主 HTML 文件、一个主 CSS 文件和一些导入到主文件中的 CSS 文件。
我知道我可以将静态文件放在两个地方:a)“战争”文件夹;或 b)“公共”文件夹。
放置静态文件的最佳位置在哪里?这两个位置的处理方式不同吗?在这个问题上是否有“最佳实践”?
我有一些 JavaScript 文件、一个主 HTML 文件、一个主 CSS 文件和一些导入到主文件中的 CSS 文件。
我知道我可以将静态文件放在两个地方:a)“战争”文件夹;或 b)“公共”文件夹。
放置静态文件的最佳位置在哪里?这两个位置的处理方式不同吗?在这个问题上是否有“最佳实践”?
这两个位置的区别在于公用文件夹中的文件由 gwt 编译器复制到“war”文件夹中的“您的模块”文件夹中。这意味着如果您部署“战争”(例如通过谷歌插件到谷歌应用引擎),“公共”文件夹中的文件不在顶层。
例如,如果您在“public”文件夹中有一个名为“mymodule”的 gwt 模块的 index.html,并且您将它部署到 www.example.com,它看起来如下所示,您需要通过以下方式访问它:
www.example.com/mymodule/index.html
如果你在'war'文件夹中有 index.html,你会得到:
www.example.com/index.html
总结。您的登录页面应位于“战争”文件夹中。登陆页面使用的资源文件也可以存储在这里(css、图像)。任何 gwt 模块文件(或代码,如图像)中引用的任何其他资源文件都应存储在与 gwt 模块相关的“公共”文件夹中。
在 GWT 中工作的新方法是使用 war 文件夹。
但是,如果您的项目是在 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();
}
然后它似乎取决于您的要求,例如:
AppClientBundle
界面中通过@Source
注释foo2.png
vs.img/foo1.png
http://host1/gwtapp1/foo4.png
vs.http://host1/gwtapp2/foo4.png
http://host1/gwtapp1/foo4.png
vs.http://host1/foo6.png
这是一个人可以做的(可能性)及其对上述R. * 的影响:
my.gwtproj.client
(此处例如foo1.png
)
下@Source("img/foo1.png")...
工作正常public
文件夹(在我的情况下my.gwtproj.public
),但是在 Eclipse 中将它创建为一个包我不允许这样做(因为public
是保留的 Java 关键字,但通过Navigator
视图创建它是有效的)
@Source
不起作用(可能是因为它是相对AppClientBundle
文件系统位置的问题)public
文件夹进行myproj/war
,例如projdir/war/foo6.png
@Source
http://host1/foo6.png
myproj/war
,例如projdir/war/img/foo5.png
@Source("img/foo5.png")
将不再起作用