目前的工作,開發團隊使用的框架是 Python 的 Flask;而身為小小前端的我在撰寫 Javascript 時,經常會遇到要在 JavaScript 中送 AJAX 到某個 route path 的實作,聽起來並不麻煩,但這個 route name 是在 Flask 中指定的,日後有可能更改,情況一多就改不完了,所以在 JavaScript 中寫死不是個好辦法。
記得之前在搭配 Rails 進行前端工作時,可以在 .js.erb
中寫 <% url = Demo::Application.routes.url_helpers %>
再用 url.某個 route name
來達成指定 route path 的目的。
可惜 Flask 好像沒有…,直接在 JavaScript 裡面寫 url_for
是沒用的(不考量更動結構,.js
依然都還是放在 static/
目錄底下);比較直觀的作法大概是在 template (會引入該 .js
的那支 .html
檔案)裡面加上 js 變數,再透過 url_for
指定 route path 給它:
<script>
var path = "{{ url_for('.test') }}";
</script>
嗯,是啊,在 template 中本來就可以使用 Jinja 語法的,只是我仍覺得這個解法不大漂亮。
所以想了些繞路的作法(若熟 Flask 的朋友路過,知道怎麼解才比較漂亮的話,請不吝賜教呀~),記錄於下: