我对提供静态文件的文档有疑问...它声称
静态文件自动从以下位置的公共目录中提供 该应用程序,可以使用“路径”自定义 Mojolicious :: Static,或者来自“类”中的DATA部分之一 Mojolicious :: Static。如果还不够,您也可以为他们服务 在Mojolicious :: Plugin :: DefaultHelpers中手动使用“ reply-> static” 和Mojolicious :: Plugin :: DefaultHelpers中的“ reply-> file”。
从公共目录自动提供服务是什么意思?与手动提供这些服务有何不同?
我想我的问题是->如何在代码中访问或使用自动提供的页面?
答案 0 :(得分:2)
the tutorial中也对此进行了简要介绍。基本上,在遍历使用get
添加的动态路由之前,它将检查公共目录或数据部分中是否提供了请求的文件路径。默认情况下,分配的唯一公共目录是应用程序根目录中的public/
。默认情况下,唯一选中__DATA__
部分的类是main
(因为__DATA__
部分模板最常用于单个文件脚本中的Mojolicious :: Lite应用程序)。
举一个真实的例子,如果您收到/foo.txt
的请求,它将首先检查public/foo.txt
部分中是否有foo.txt
文件或__DATA__
main
包。如果找到一个,它将按原样提供,并对缓存静态文件的浏览器进行了一些优化。如果没有,它将尝试将其与您声明的路由匹配。
您的应用程序的Mojolicious :: Static对象中的paths
和classes
属性(可以在应用程序上作为static
属性访问)可以在启动期间与其他位置一起更改或附加看。
push @{$app->static->paths}, $app->home->child('other');
$app->static->classes(['Some::Class']);