首页 > 解决方案 > 提供静态文件的文档

问题描述

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

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

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

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

标签: perlmojolicious

解决方案


本教程也简要介绍了这一点。基本上,在通过您添加的动态路由get等之前,它会检查您的公共目录或数据部分中是否提供了请求的文件路径。默认情况下,分配的唯一公共目录public/位于您的应用程序根目录中。默认情况下,检查部分的唯一类__DATA__main(因为__DATA__部分模板最常用于单个文件脚本中的 Mojolicious::Lite 应用程序)。

所以作为一个真实的例子,如果你收到一个请求,它会首先检查包的部分中/foo.txt是否有public/foo.txt文件或a 。如果找到,它将按原样提供,并对缓存静态文件的浏览器进行一些优化。如果不是,它将尝试将其与您声明的路线相匹配。foo.txt__DATA__main

您的应用程序的 Mojolicious::Static 对象中的pathsandclasses属性(可作为static应用程序上的属性访问)可以在启动期间更改或附加到其他地方查看。

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

推荐阅读