拖放向导 - Web 应用程序目录和编辑静态文件



我最近开始使用drop-wizard开发应用程序,对整个过程的工作方式有点困惑。

  1. web应用程序目录在哪里?
  2. 是否有可能编辑静态文件(JS, CSS)而不需要重新部署?

谢谢。

我对此进行了更多的研究,并将尝试回答您的问题:

  1. web应用程序目录在哪里

DW应用程序不是web应用程序。它们被部署为一个嵌入式系统,运行一个jetty嵌入式服务器,并监听一些端口。话虽如此,还是有很多方法可以将应用程序打包为web应用程序。(见评论中的链接)

  • 是否有可能编辑静态文件(JS, CSS)而不需要重新部署?-是(大致)
  • 这取决于你,真的。有一个东西叫做AssetBundle。这些可以用于服务器静态资源(通常来自类路径)。然而,这是一种你可以用来实现你自己的AssetBundle的机制,它不是在类路径下提供文件,而是在常规路径下提供文件。

    或者,你可以在启动时将你的常规路径添加到类路径中,这样AssetBundle就可以工作了。

    或者,您可以为AssetBundle实现ServletFilter(资产不是jersey生态系统的一部分),并在Filter中实现您的动态更改。

    大多数将需要重新启动的原因或其他。例如,过滤器的自定义实现显然需要重新部署。返回资产的Servlet还(我相信)采用了可能需要重新启动的缓存策略(取决于您的实现)。

    对于你的UI:还有一个DW-views项目,它增加了创建视图的能力(默认情况下使用mustache模板),这些视图可以从你的应用程序中获得支持,并由相同的REST端点提供服务。

    希望有帮助,

    再检查一下:

    您可以从文件系统提供静态资源并随时修改它们。他们会得到正确的服务。怎么做:

    添加一个带有资源路径的资产包:

    bootstrap.addBundle(new AssetsBundle("/assets2/", "/assets"));
    

    添加根类路径资源assets2,并从端点assets静态地为其提供服务。

    诀窍在于您必须将文件系统位置添加为类路径资源。这可以通过参数(或eclipse运行配置中的classpath选项卡)完成。谷歌一下就知道了。但是,您必须记住类路径资源的行为与文件系统资源不同:

    在我的例子中,我添加到类路径:

    /home/artur/tmp/assets/
    

    然而,我的资产包服务于"assets2"。让我们看一下文件系统:

    artur@pandaadb:~/tmp/assets$ pwd
    /home/artur/tmp/assets
    artur@pandaadb:~/tmp/assets$ find .
    .
    ./assets2
    ./assets2/test.txt
    artur@pandaadb:~/tmp/assets$
    

    所以,在我的文件系统位置已添加为root,但资产只服务于子文件夹assets2

    现在,位于assets2中的所有资源都可以在运行时修改,并且将由DW作为静态资源提供服务。

    玩得开心,

    阿图尔

    最新更新