我目前正在清理我在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中,有多種方法可以實現它。