有关提供静态文件的文档

时间:2019-08-15 09:31:32

标签: perl mojolicious

我对提供静态文件的文档有疑问...它声称

  

静态文件自动从以下位置的公共目录中提供   该应用程序,可以使用“路径”自定义   Mojolicious :: Static,或者来自“类”中的DATA部分之一   Mojolicious :: Static。如果还不够,您也可以为他们服务   在Mojolicious :: Plugin :: DefaultHelpers中手动使用“ reply-> static”   和Mojolicious :: Plugin :: DefaultHelpers中的“ reply-> file”。

从公共目录自动提供服务是什么意思?与手动提供这些服务有何不同?

我想我的问题是->如何在代码中访问或使用自动提供的页面?

1 个答案:

答案 0 :(得分:2)

the tutorial中也对此进行了简要介绍。基本上,在遍历使用get添加的动态路由之前,它将检查公共目录或数据部分中是否提供了请求的文件路径。默认情况下,分配的唯一公共目录是应用程序根目录中的public/。默认情况下,唯一选中__DATA__部分的类是main(因为__DATA__部分模板最常用于单个文件脚本中的Mojolicious :: Lite应用程序)。

举一个真实的例子,如果您收到/foo.txt的请求,它将首先检查public/foo.txt部分中是否有foo.txt文件或__DATA__ main包。如果找到一个,它将按原样提供,并对缓存静态文件的浏览器进行了一些优化。如果没有,它将尝试将其与您声明的路由匹配。

您的应用程序的Mojolicious :: Static对象中的pathsclasses属性(可以在应用程序上作为static属性访问)可以在启动期间与其他位置一起更改或附加看。

push @{$app->static->paths}, $app->home->child('other');
$app->static->classes(['Some::Class']);