【问题标题】: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 %>&param2=<% $stashvalue2 %>"></script>
    

    并且,在响应 /url/served/by/mojo/ 的控制器中,渲染该 js 文件,并将参数替换为查询中的参数。作为替代方案,您也可以在 session

    上存储/接收这些参数

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

    【讨论】:

      【解决方案2】:

      我通常做的是将我的大部分 javascript 封装在函数调用或纯 javascript 文件中的对象中。然后在我的模板中包含那些纯 javascript 文件并使用我在模板中构建的这些文件中的 api,将服务器端变量插入到函数的参数中。您可以仔细阅读Galileo 的代码以查看几个示例。

      例如,看看this template 如何将存储值传递给this pure javascript file 的功能。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-21
        • 1970-01-01
        • 2019-11-07
        • 2017-10-28
        • 2021-10-20
        • 2010-09-27
        • 1970-01-01
        • 2021-12-11
        相关资源
        最近更新 更多