2013-01-13 74 views
3

我有一個簡單的js文件:的Javascript硬編碼的變量

//base.js 

... 
var url = '/post/' + id + '/comment'; 
... 

我使用的Symfony2等所有的URL由路由器生成的服務器端,它的錯誤我,我使用硬編碼的網址js ..

有沒有辦法讓他們更具活力?
這些都是我想到了解決方案,但我不快樂有:

  • 定義他們的HTML標籤,如<div data-url="<?php path('post_comment'); ?>">
  • 在內嵌腳本標籤<script language="text/javascript">...</script>

他們定義我認爲某些大網站(SO,GitHub等)的js文件中的url是硬編碼的,對嗎?

+0

我能想到的一個替代例子是在構建步驟中生成url映射(並將它們保存在javascript對象中) – zerkms

+0

我最終聲明瞭一個全局命名空間對象並插入了所需的所有路徑作爲屬性目的。我一點都不喜歡它......這是Symphony的一個侷限性,它已經把我拒之門外。 – JaredMcAteer

回答

1

Friends of Symfony JS Routing Bundle作出準確滿足您的需求

var url = Routing.generate('some_route_to_expose', { foo: 'bar' }); 
// url is http://somehost.com/app_dev.php/my_route 

該軟件包還可以讓你傾倒,編譯,然後再縮小導致的JavaScript。這很棒!

0

通過在配置對象中定義所有常量變量並使用屬性名稱或getter函數來訪問它,至少應該儘量減少名稱空間污染。