2012-07-06 73 views
1

我有一个主要基于JavaScript的网站。它使用REST服务。我在JavaScript页面中硬编码了REST服务URL。该URL将从PROD更改为测试。每次我将这个站点部署到不同的环境时,我需要去更新.JS文件。管理这些的最佳方法是什么?有没有更好的方法来做到这一点?控制JavaScript中的设置

回答

2

您可以通过location.href获取JS加载的当前页面的URL。使用这个和一些字符串操作,你可以动态地创建这些RESTful URL。

1

我通常会将这些地址和其他部署敏感值分隔到由服务器在运行时生成的单独的脚本块中。

例子:(ASP.NET MVC在这里,但可以是任何语言/框架)

<script type="text/javascript"> 
    var pageOptions = 
    { 
     "detailsDataUrl": '@Url.Action("LoadDetail", "Contact")', 
     "applicationBase": '@Url.Content("~")' 
    }; 
</script> 

你可以交替与眼前这个类型的数据,你的部署过程的一部分,是一个文件的多个版本部署环境的版本。

更新:K. Scott Allen对从服务器代码传递数据到JavaScript代码的不同选项做了一个很好的发帖,这只是一个例子。你可以阅读它here。他特别提到了一个名为NGON的图书馆,该图书馆正式确定了上述模式,并增加了一些便利的花里胡哨的功能。我已将它添加到几个项目中,并发现它非常有用。

1

每个人都有一点不同,但通常这是使用构建系统完成的。在构建期间,在构建的服务器上有一个环境变量,其值为“prod”或“qa”或“dev”。当构建Web应用程序组件时,一个步骤就是使用适合环境的值替换放入文件中的令牌。

请注意,如果您为宁静的端点使用相对路径,则不需要执行此操作。如果您需要更改主机/协议/端口信息,则只需要执行此操作。这很糟糕。可能更好地了解您正在测试哪个环境并使用/ etc/hosts将标准URL映射到特定环境的URL。例如,如果你的应用程序使用

www.myapp.com

你能设置,即其URL映射到qa.myapp.com:80的环境。您可以使用脚本来管理更改主机文件以适应您想要的任何环境。