在 javascript 中创建全局 urls 对象以便在模板中轻松反向路由是一种好习惯吗?

Posted

技术标签:

【中文标题】在 javascript 中创建全局 urls 对象以便在模板中轻松反向路由是一种好习惯吗?【英文标题】:is it good practice to create a global urls object in javascript, for easy reverse routing in templates? 【发布时间】:2012-06-13 08:33:32 【问题描述】:

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

我想出了一个不强制每个外部 ajax 函数接受 url 参数的解决方案,那就是创建一个像这样的全局 url 对象:

var globalUrls = 
    confirmImageUpload : "@routes.UploadController.confirmResourceUpload()",
    anotherUrl : "@routes.AnotherController.anotherControllerMethod()"

然后我在外部 js 文件中使用这个对象来知道将 ajax 请求发送到哪里。

这样可以吗?我不知道这是否是不好的做法,或者像这样公开所有网址是否明智......

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

以上是关于在 javascript 中创建全局 urls 对象以便在模板中轻松反向路由是一种好习惯吗?的主要内容,如果未能解决你的问题,请参考以下文章

在 C# Web 浏览器中创建 javascript 变量全局范围

我们可以在 Power BI 中声明全局变量吗?我想在表中创建 url 列,并且域对于每个环境(Dev、QA、Prod)都会有所不同

在JavaScript中创建命名空间的几种写法

如何在 Javascript 中创建查询参数?

在 PHP 可读的 javascript 中创建 PEM 密钥对

如何在 django 模板中创建文件