Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GWT应用程序的静态文件放在哪里?war文件夹还是公用文件夹?_Gwt_Web Applications_Directory Structure - Fatal编程技术网

GWT应用程序的静态文件放在哪里?war文件夹还是公用文件夹?

GWT应用程序的静态文件放在哪里?war文件夹还是公用文件夹?,gwt,web-applications,directory-structure,Gwt,Web Applications,Directory Structure,我有一些JavaScript文件、一个主HTML文件、一个主CSS文件和一些导入到主CSS文件中的CSS文件 我知道我可以把静态文件放在两个地方:a)war文件夹;或b)“公共”文件夹 放置静态文件的最佳位置是哪里?这两个地点的待遇是否不同?在这个问题上有“最佳实践”吗?在GWT中工作的新方法是使用war文件夹 但是,如果您的项目是在GWT应用程序中使用的可重用小部件库,那么您应该将资源放在公用文件夹中。编译器将确保文件自动包含在生成的包中。这两个位置之间的区别在于,公用文件夹中的文件由gwt编

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

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


放置静态文件的最佳位置是哪里?这两个地点的待遇是否不同?在这个问题上有“最佳实践”吗?

在GWT中工作的新方法是使用war文件夹


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

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

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

www.example.com/mymodule/index.html
如果“war”文件夹中有index.html,则会得到:

www.example.com/index.html

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

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

我发现(应该是GWT2.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
接口(或其他应用程序引用上下文)中引用此类资源:

然后它似乎取决于您的要求,例如:

  • R.a)这些资源(如图像)在应用程序代码中引用,例如通过
    @Source
    注释在我们的
    AppClientBundle
    界面中引用
  • R.b)这些资源将按文件夹进行分组,例如
    foo2.png
    img/foo1.png
  • R.c)这些资源应该在某些特定应用程序URL上下文路径之外可用,例如,如果用作小部件库,例如
    http://host1/gwtapp1/foo4.png
    vs.
    http://host1/gwtapp2/foo4.png
  • R.d)这些资源需要独立于应用程序(例如外部)URL引用,例如
    http://host1/gwtapp1/foo4.png
    vs.
    http://host1/foo6.png
以下是一个人可以做的(可能性)及其对上述R*的影响:

  • P.1)在我看来通常是推荐的)在
    my.gwtproj.client
    (这里例如
    foo1.png
    )下巧妙地放置文件夹结构化资源
    • 这样
      @Source(“img/foo1.png”)…
      就可以正常工作了
    • 在上面的文档中,他们谈到了一些
      public
      文件夹
      (在我的例子中是
      my.gwtproj.public
      ),但在Eclipse中将其创建为一个包并不允许这样做(因为
      public
      是一个保留的Java关键字
      ,但通过
      导航器
      视图创建它是可行的)
      • 但是,这样上面的
        @Source
        就不起作用了(可能是因为它与相对的
        AppClientBundle
        文件系统位置有关)
      • 然而,如果资源应该在应用程序上下文下公开可用,则可能必须通过此
        public
        文件夹进行
  • P.2)未分组的资源直接放在
    myproj/war
    下,例如
    projdir/war/foo6.png
    • 这样就可以在注释中使用/找到它,例如
      @Source
    • 并且可以通过
      http://host1/foo6.png
  • P.3)将文件夹结构化资源放在
    myproj/war
    下,例如
    projdir/war/img/foo5.png
    • 与第2页相比,
      @Source(“img/foo5.png”)
      将不再有效

如何将css放入war文件夹,然后在xxx.gwt.xml文件中引用它?我的问题是,我的相对url将来可能会更改,我不想更改任何将其保留在公共gwt文件夹中的内容(准则6)。但当将任何内容放入
war
文件夹时,它会在重新编译项目时被删除。应将静态资源放在何处?确保App.gwt.xml中有一个公用文件夹,并在存储gwt.xml文件的包中创建一个公用文件夹。GWT编译器将在生成的输出中复制您公开放置的所有文件。(它将在模块文件夹中,而不是war根文件夹中)。这个答案对GWT2.6仍然有效吗?我的项目似乎没有
public
文件夹。另一方面,如果我在
war
文件夹中添加了任何内容,那么在我重新编译项目时它就会被删除。那么,静态文件现在应该放在哪里呢?一个非常广泛的分析,但它确实应该是一个新问题。在这种情况下,你应该更好地组织你的提问,否则它可能会被标记为“不清楚你在问什么”
interfaces AppClientBundle extends ClientBundle {

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