【问题标题】:How to avoid hard coding the server url如何避免硬编码服务器 url
【发布时间】:2016-01-05 13:51:57
【问题描述】:

我对 javascript 世界很陌生。我有一个使用 Typescript 的 Angular2 + Webpack 应用程序,我想在属性文件中定义我的服务器的 url,以便能够在构建后更改它。

它就像一个 config.js 文件,可以在构建后访问,也可以在开发模式下访问。

首先:这是个好主意吗? 第二:为什么我觉得我是唯一一个有这种问题的人?

如果这是个好主意,你会怎么做?

【问题讨论】:

  • 你在这里想要达到的目的是什么?您打算如何使用该网址?这些问题的答案可能有助于回答您的第二个问题。
  • 我想使用 url 来使用 angular2 http 使用 REST api。
  • 所以简而言之 - 正如 Aaron 在他的回答中所涵盖的那样,感觉就像你是唯一的人的原因是,客户需要绝对 URL 到你自己的 URL 并不是很可怕后端,因为相对 URL 可以完成这项工作并且不那么脆弱。这对于使用另一方的 API 更为重要。在 Angular 1.x 中,我可能会设置一个 Angular 服务来处理对该第 3 方 API 的所有调用,并且可以轻松地包含 URL 的常量。我还没有完成 Angular 2,但从我所见,看起来同样的方法仍然有效。然后将其注入到需要它的组件中。
  • 问题是 url 的变化取决于环境(开发,产品..)
  • 只是主机/域?还是路径的其他部分?

标签: javascript webpack angular


【解决方案1】:

如果您只有一个主机,即您的所有内容都来自同一台服务器,或者您的后端服务器可以通过与前端服务器相同的域名和端口访问,您应该使用relative URLs

【讨论】:

  • 我以后可能会有不止一个主机。目前,相对 url 应该足够了,但我期待未来的问题。
  • @bobkilla 我不知道 angular2 但在 angular 我想我会使用module value。我也不知道 webpack,所以我很可能会错过更合适的方式。
【解决方案2】:

是的,这绝对是个好主意,不,这不是问题。

通常您会定义一个默认配置和后续的 ENV 特定配置,这些配置可能/不会覆盖默认值。执行此操作的常用方法是设置应用程序可以处理的 ENV 变量并选择 ENV 特定配置。

看看 MEAN.io 和他们的种子项目,他们做得很好。

Webpack 可以检测到更改并重新加载应用程序。显然不是你想在 PROD 中做的事情

【讨论】:

    猜你喜欢
    • 2022-10-31
    • 1970-01-01
    • 1970-01-01
    • 2010-10-22
    • 1970-01-01
    • 2015-07-31
    • 2014-03-07
    • 2018-11-19
    • 1970-01-01
    相关资源
    最近更新 更多