是否可以在外部JS文件中使用Mojolicious标记助手?

use*_*233 4 javascript perl jquery mojo mojolicious

我目前正在努力清理一个我用Mojolicious写的小网页应用程序.作为清理的一部分,我将我的javascript从html.ep文件中分离到公共目录中.

我遇到的问题是我似乎无法再引用标记助手,例如'url_for'或甚至引用存储中的值,例如'<%$ stashvalue%>'.

关于如何或如果我能做到这一点的任何想法非常感谢.

干杯.

Tud*_*tin 5

在东西public目录静态地提供,优化您的网络服务器,而不是Mojolicious或普拉克,所以该文件没有得到通过处理Mojolicious,因此<% $stashvalue %>不意味着任何东西.

一个解决方案是嵌入需要访问mojo模板中的服务器端变量的javascript部分 - 相当难看,但编写的代码较少.

另一个是从你的javascript文件加载时调用ajax调用,并获取服务器发送的值 - 更优雅,但需要编写更多代码.

我能想到的另一个,就是将这些javascript文件移动到一个文件夹下,Mojolicious并将其包含参数化 - 在你html.ep需要js文件的文件中,执行:

<script type="text/javascript" src="http://example.com/url/served/by/mojo/?param1=<% $stashvalue %>&param2=<% $stashvalue2 %>"></script>
Run Code Online (Sandbox Code Playgroud)

并且,在响应的控制器中/url/served/by/mojo/,呈现该js文件,其中params被查询中的params替换.作为替代方案,您也可以存储/接收这些参数session

通常在Perl中,有不止一种方法可以做到这一点.