Pergunta

Eu tenho alguns arquivos JavaScript, um arquivo HTML principal, um arquivo CSS principal, e alguns arquivos CSS que são importados para o principal.

Eu entendo que eu posso colocar arquivos estáticos em dois lugares: a) a pasta 'guerra'; ou b) a pasta 'público'.

Onde é o melhor lugar para colocar meus arquivos estáticos? São os dois locais tratados de forma diferente? Existe uma 'melhor prática' sobre esta questão?

Foi útil?

Solução

A diferença entre os 2 locais é que os arquivos nas pastas públicas são copiados pelo compilador GWT para o 'seu módulo' pasta na pasta 'guerra'. Este é o meio se você implantar a 'guerra' (por exemplo, através do Google Plugin para o google appengine) os arquivos do 'público' pasta não estão no nível superior.

Por exemplo, se você tem um index.html na pasta 'público' com o GWT módulo 'mymodule' chamado e implantá-lo para www.example.com fique da seguinte maneira, você precisa acessá-lo via:

www.example.com/mymodule/index.html

Se você tem o index.html na pasta 'guerra', você obtém:

www.example.com/index.html

Resumindo. Sua página de destino deve estar na pasta 'guerra'. arquivos de recursos usados ??pela página de destino também podem ser armazenados aqui (CSS, imagens). Qualquer outro arquivo de recurso que é referido em qualquer arquivo gwt módulo (ou código, como imagens) deve ser armazenado na pasta 'público' relacionado com o GWT módulo.

Outras dicas

A nova forma de trabalhar em GWT é usar a pasta guerra.

Mas, se você projetar é uma biblioteca de widgets reutilizáveis ??que é usado em um aplicativo GWT, em seguida, você deve colocar os recursos na pasta pública. O compilador irá certificar-se de que os arquivos são automaticamente incluídos no pacote gerado.

A meu ver, isso depende de suas necessidades, mas vamos começar com um exemplo de falar primeiro ...

I encontrar o documentação (deve ser GWT 2.6.0) sobre esta para ser incorrecto ou incompleto, pelo menos, / confuso. A meu ver ( Eu não sou um guru então por favor me corrigir se minhas investigações estão errados! ) Eu estou olhando para a seguinte estrutura proj exemplo

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 que pode (ou não) necessidade de referenciar esses recursos em alguma interface AppClientBundle (ou outro contexto de referência da aplicação):

interfaces AppClientBundle extends ClientBundle {

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

Em seguida, ele parece depender de suas necessidades , por exemplo:.

  • R.A.) esses recursos (como imagens) são refered no código do aplicativo , por exemplo, em nossa AppClientBundle interface através @Source anotações
  • R.B.) esses recursos devem ser agrupados por pastas , por exemplo, foo2.png vs. img/foo1.png
  • R. C) esses recursos devem estar disponíveis fora alguma aplicação URL caminho do contexto específico, por exemplo, se for usado como biblioteca widget, v.g. http://host1/gwtapp1/foo4.png vs. http://host1/gwtapp2/foo4.png
  • R.D.) esses recursos precisam estar aplicativo independente (por exemplo externamente)-referenciada URL, por exemplo, http://host1/gwtapp1/foo4.png vs. http://host1/foo6.png

Aqui está o que se pode fazer ( Possibilidades ) e é implicações sobre R * acima:.

  • P.1) ( geralmente recomendado como eu vê-lo ) colocou muito bem recursos estruturada-pasta sob my.gwtproj.client (aqui por exemplo, foo1.png )
    • Desta forma @Source("img/foo1.png")... funciona bem
    • na documentação acima eles speek sobre alguns public pasta (no meu caso my.gwtproj.public), mas me não criá-lo como um pacote em Eclipse não permite isso (desde public é um Java reservados palavra-chave , mas criá-la através das obras vista Navigator)
      • No entanto, desta forma o @Source acima não funciona (provavelmente porque é um problema com a localização relativa do sistema de arquivos AppClientBundle)
      • no entanto, se o recurso deve estar disponível publicamente sob o contexto de aplicação pode ter que fazê-lo através deste public pasta
  • P.2) put "não agrupadas" recursos diretamente sob myproj/war , por exemplo, projdir/war/foo6.png
    • Desta forma ele pode ser usado / encontrado dentro de anotações, por exemplo, @Source
    • e pode ser referenciada fora do próprio aplicativo através, por exemplo, http://host1/foo6.png
  • P.3) put recursos estruturada-pasta sob myproj/war , por exemplo, projdir/war/img/foo5.png
    • em contraste com P.2) @Source("img/foo5.png") não iria mais trabalhar
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top