【问题标题】:Is it possible to use Mojolicious tag helpers in external JS files?是否可以在外部 JS 文件中使用 Mojolicious 标签助手?
【发布时间】:2013-02-25 13:42:08
【问题描述】:
我目前正在清理我用 Mojolicious 编写的一个小型 Web 应用程序。作为清理工作的一部分,我将我的 javascript 从我的 html.ep 文件中分离到公共目录中。
我遇到的问题是我似乎无法再引用标签助手,例如“url_for”,甚至无法引用存储中的值,例如“”。
非常感谢任何关于如何或是否可以做到这一点的想法。
干杯。
【问题讨论】:
标签:
javascript
jquery
perl
mojolicious
mojo
【解决方案1】:
public 目录中的内容是静态提供的,最好由您的网络服务器提供,而不是由 Mojolicious 或 Plack 提供,因此 Mojolicious 不会处理该文件,因此 <% $stashvalue %> 没有任何意义。
一种解决方案是在 mojo 模板中嵌入需要访问服务器端变量的 javascript 部分 - 相当丑陋,但要编写的代码更少。
另一种方法是从您的 javascript 文件中进行 ajax 调用,当它们被加载时,并获取服务器发送的值 - 更优雅,但需要编写更多代码。
我能想到的另一个方法是将这些 javascript 文件移动到由 Mojolicious 处理的文件夹下,并将它们参数化 - 在需要该 js 文件的 html.ep 文件中,这样做:
<script type="text/javascript" src="http://example.com/url/served/by/mojo/?param1=<% $stashvalue %>¶m2=<% $stashvalue2 %>"></script>
并且,在响应 /url/served/by/mojo/ 的控制器中,渲染该 js 文件,并将参数替换为查询中的参数。作为替代方案,您也可以在 session
上存储/接收这些参数
通常在 Perl 中,有不止一种方法可以做到这一点。