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

发布于 2024-08-06 12:11:33 字数 171 浏览 4 评论 0原文

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

我知道我可以将静态文件放在两个地方:a)“war”文件夹;或 b) “公共”文件夹。

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

I have some JavaScript files, a main HTML file, a main CSS file, and some CSS files that get imported into the main one.

I understand that I can put static files in two places: a) the 'war' folder; or b) the 'public' folder.

Where is the best place to put my static files? Are the two locations treated differently? Is there a 'best practice' on this issue?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

回心转意 2024-08-13 12:11:33

这两个位置之间的区别在于公共文件夹中的文件由 gwt 编译器复制到“war”文件夹中的“your module”文件夹。这意味着如果您部署“war”(例如通过谷歌插件到谷歌应用程序引擎),“public”文件夹中的文件不会位于顶层。

例如,如果“public”文件夹中有一个名为“mymodule”的 gwt 模块的 index.html,并将其部署到 www.example.com,它看起来如下,您需要通过以下方式访问它:

www.example.com/mymodule/index.html

如果您有索引在“war”文件夹中的 .html 中,您会得到:

www.example.com/index.html

总结。您的目标网页应位于“war”文件夹中。登陆页面使用的资源文件也可以存储在这里(css、图像)。任何 gwt 模块文件(或代码,如图像)中引用的任何其他资源文件应存储在与 gwt 模块相关的“public”文件夹中。

The difference between the 2 locations is that files in the public folders are copied by the gwt compiler to the 'your module' folder in the 'war' folder. This is means if you deploy the 'war' (for example via the google plugin to the google appengine) the files from the 'public' folder are not at the toplevel.

For example, if you have an index.html in the 'public' folder with gwt module named 'mymodule' and you deploy it to www.example.com it looks as follows, you need to access it via:

www.example.com/mymodule/index.html

If you have the index.html in the 'war' folder, you get:

www.example.com/index.html

Summarizing. Your landing page should be in the 'war' folder. Resource files used by the landing page can also be stored here (css, images). Any other resource file that is referred to in any gwt module file (or code, like images) should be stored in the 'public' folder related to the gwt module.

网名女生简单气质 2024-08-13 12:11:33

GWT 中的新工作方式是使用 war 文件夹。

但是,如果您的项目是在 GWT 应用程序中使用的可重用小部件库,那么您应该将资源放在公共文件夹中。编译器将确保这些文件自动包含在生成的包中。

The new way of working in GWT is to use the war folder.

But, if you project is a reusable widget library which is used in a GWT application then you should put the resources in the public folder. The compiler will make sure that the files are automatically included in the generated package.

吹梦到西洲 2024-08-13 12:11:33

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

我找到 文档(应该是 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();
}

那么它似乎取决于您的要求,例如:

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

以下是人们可以做的事情(可能性)及其对 R 的影响.* 上面:

  • P.1)据我所知通常推荐)将文件夹结构的资源很好地放在 my.gwtproj 下.client(此处例如foo1.png
    • 这样 @Source("img/foo1.png")... 工作正常
    • 在上面的文档中,他们谈到了一些public文件夹(在我的例子中my.gwtproj.public),但是将其创建为Eclipse 中的包不允许这样做(因为 public 是保留的 Java 关键字,但通过 Navigator 视图创建它是可行的)
      • 但是,这样上面的 @Source 就不起作用(可能是因为相对 AppClientBundle 文件系统位置存在问题)
      • 尽管如此,如果资源应该在应用程序上下文中公开可用,则可能必须通过此 public 文件夹来实现
  • P.2)“未分组”资源直接放在myproj/war<下/code>,例如projdir/war/foo6.png
    • 这样就可以在注释中使用/找到它,例如@Source
    • 并且可以通过例如http://host1/foo6.png
    • 在应用程序本身外部引用它

  • P.3)文件夹结构的资源放在myproj/war下,例如projdir/war/img/foo5.png
    • 与 P.2 相比)@Source("img/foo5.png") 将不再起作用

As I see it, it depends on your requirements, but let's start at a speaking example first ...

I find the documentation (should be GWT 2.6.0) about this to be incorrect or at least incomplete/confusing. As I see it (I am not a guru so please correct me if my investigations are wrong!) I am looking at the following example proj structure

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

Imagine we may (or may not) need to reference such resources in some AppClientBundle interface (or other application reference context):

interfaces AppClientBundle extends ClientBundle {

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

Then it seems to depend on your Requirements, e.g.:

  • R.a) these resources (like images) are refered to in the application code, e.g. in our AppClientBundle interface via @Source annotations
  • R.b) these resources are to be grouped by folders, e.g. foo2.png vs. img/foo1.png
  • R.c) these resources should be available outside some specific application URL context path, e.g. if used as widget library, e.g. http://host1/gwtapp1/foo4.png vs. http://host1/gwtapp2/foo4.png
  • R.d) these resources need to be application-independently (e.g. externally) URL-referenced, e.g. http://host1/gwtapp1/foo4.png vs. http://host1/foo6.png

Here's what one can do (Possibilities) and it's implications regarding R.* above:

  • P.1) (generally recommended as I see it) put nicely folder-structured resources under my.gwtproj.client (here e.g. foo1.png)
    • this way @Source("img/foo1.png")... works fine
    • in the docs above they speek about some public folder (in my case my.gwtproj.public), but creating it as a package in Eclipse does not me allow this (since public is a reserved Java key word, but creating it via the Navigator view works)
      • however, this way the @Source above does not work (likely because it's an issue with the relative AppClientBundle file system location)
      • nevertheless if the resource should be publicly available under the application context one may have to do it via this public folder
  • P.2) put "ungrouped" resources directly under myproj/war, e.g. projdir/war/foo6.png
    • this way it can be used/found within annotations, e.g. @Source
    • and it can be referenced outside the application itself via e.g. http://host1/foo6.png
  • P.3) put folder-structured resources under myproj/war, e.g. projdir/war/img/foo5.png
    • in contrast to P.2) @Source("img/foo5.png") would not work anymore
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文