【问题标题】:Controlling Settings in JavaScript在 JavaScript 中控制设置
【发布时间】:2012-07-07 01:11:15
【问题描述】:

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

【问题讨论】:

    标签: javascript rest configuration web-config


    【解决方案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 的库,它形式化了上述模式并添加了一些方便的花里胡哨。我已将它添加到几个项目中,发现它非常有用。

    【讨论】:

      【解决方案2】:

      每个人的做法都有所不同,但通常这是使用构建系统完成的。在构建期间,执行构建的服务器上有一个环境变量,其值类似于“prod”或“qa”或“dev”。构建 Web 应用程序组件时,需要将您放入文件中的标记替换为适合环境的值。

      请注意,如果您对 restful 端点使用相对路径,则不需要这样做。只有在需要更改主机/协议/端口信息时才需要这样做。这太糟糕了。最好知道您正在测试哪个环境并使用 /etc/hosts 将标准 url 映射到环境特定的。例如,如果您的应用使用

      www.myapp.com

      您可以设置一个将该 url 映射到 qa.myapp.com:80 的环境。您可以使用脚本来管理更改主机文件以适应任何您想要的环境。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-08-30
          • 1970-01-01
          • 2016-03-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多