我目前正在清理我在Mojolicious编写的一个小网站应用程序。作为清理的一部分,我将我的javascript从我的html.ep文件中分离出来。是否可以在外部JS文件中使用Mojolicious标签助手?
虽然我的问题是我似乎无法再引用标签帮助器,比如'url_for'或者甚至引用存储器中的值,如'<%$ stashvalue%>'。
任何想法如何或如果我能做到这一点非常感谢。
欢呼声。
我目前正在清理我在Mojolicious编写的一个小网站应用程序。作为清理的一部分,我将我的javascript从我的html.ep文件中分离出来。是否可以在外部JS文件中使用Mojolicious标签助手?
虽然我的问题是我似乎无法再引用标签帮助器,比如'url_for'或者甚至引用存储器中的值,如'<%$ stashvalue%>'。
任何想法如何或如果我能做到这一点非常感谢。
欢呼声。
我通常所做的就是将大部分JavaScript都封装在函数调用或纯JavaScript文件中的对象中。然后在我的模板中包含那些纯JavaScript文件,并使用我在模板中构建的这些文件中的api,将服务器端变量插入到函数的参数中。您可仔细阅读Galileo的代码以查看几个示例。
例如,请参阅this template如何将存储值传递到的功能。
在public
目录中的东西是静态服务,优化您的网络服务器,而不是由Mojolicious
或普拉克,所以该文件没有得到通过Mojolicious
处理,从而<% $stashvalue %>
不意味着任何东西。
一个解决方案是嵌入那些需要在mojo模板中访问服务器端变量的JavaScript部分 - 相当难看,但编写的代码更少。
另一个方法是在你的javascript文件中加载一个ajax调用,并获取服务器发送的值 - 更优雅,但代码更多。
另外一个,我能想到的,会动的是得到由Mojolicious
处理,包括它们的参数文件夹下的JavaScript文件 - 在你html.ep
文件需要一个js文件,这样做:
<script type="text/javascript" src="http://example.com/url/served/by/mojo/?param1=<% $stashvalue %>¶m2=<% $stashvalue2 %>"></script>
而且,在响应/url/served/by/mojo/
的控制器中,呈现该js文件,并将参数替换为查询中的参数。作为替代方案,您也可以在session
上存储/接收这些参数。通常在Perl中,有多种方法可以实现它。