在javascript中创建一个全局URL对象,以便于在模板中进行反向路由,这是一种好的做法吗?

在javascript中创建一个全局URL对象,以便于在模板中进行反向路由,这是一种好的做法吗?,javascript,ajax,templates,global-variables,Javascript,Ajax,Templates,Global Variables,我正在从事一个使用大量ajax的web项目。我使用的是playframework,在我的html模板中,我可以访问playframework反向路由器,因此我可以从路由器获取url,而不必担心如果我以后决定更改站点的url结构会发生什么。但是,我没有访问外部js文件中的反向路由器的权限,但我通常希望利用反向路由器的间接寻址来处理这些文件中的请求 我提出了一个解决方案,它不会强制每个外部ajax函数接受url参数,而是创建一个全局url对象,如下所示: var globalUrls = {

我正在从事一个使用大量ajax的web项目。我使用的是playframework,在我的html模板中,我可以访问playframework反向路由器,因此我可以从路由器获取url,而不必担心如果我以后决定更改站点的url结构会发生什么。但是,我没有访问外部js文件中的反向路由器的权限,但我通常希望利用反向路由器的间接寻址来处理这些文件中的请求

我提出了一个解决方案,它不会强制每个外部ajax函数接受url参数,而是创建一个全局url对象,如下所示:

var globalUrls = {
    confirmImageUpload : "@routes.UploadController.confirmResourceUpload()",
    anotherUrl : "@routes.AnotherController.anotherControllerMethod()"
}
然后,我在外部js文件中使用这个对象来知道在哪里发送ajax请求

这样可以吗?我不知道这是不是一个坏习惯,或者像那样公开所有的URL是否明智


我希望一些有经验的人会插话,如果这是出于某种原因的愚蠢…

我认为还有其他方法可以减少全局应用程序的数量,使您的应用程序更加模块化,但如果不了解您的应用程序是如何构造的,就很难说了

也许您有一个处理ajax查询的类或模块,您可以将URL存储在其中?例如,它可以有一个方法“setDefaultAjaxServerAddresses()”。然后它会将这些存储在模块中