【问题标题】:AngularJS: Absolute vs Relative PathsAngularJS:绝对路径与相对路径
【发布时间】:2015-05-15 17:48:20
【问题描述】:

我正在启动一个 AngularJS 应用程序,我需要在生产模式下使用绝对路径调用我的静态文件,在开发中使用相对路径。

例如,如果我需要访问一个 JS 静态文件夹,在生产中我需要调用:https://statics.domain.com/js,在开发中我将有一个常规的 assets/js 文件夹。

有没有最好的方法?

谢谢!

编辑:重要的一点是这个应用程序与后端是分开的。

【问题讨论】:

  • 构建过程可以处理这个问题,不过,我希望尽可能使用相对路径来运行生产。
  • 为什么生产中的相对路径会更好?
  • 我从来没有说过它会更好,只是我更喜欢它。我发现它使部署更容易。
  • 在我当前的应用程序中,我使用的构建过程有两个不同的入口点:为开发而构建,为生产而构建。根据我正在运行的构建,它会在结果代码中输出不同的目标 api 端点。
  • 明白了。然后你可以为你的 index.html 做同样的事情。一个构建过程使用公用文件夹的相对路径原样复制它,另一个构建过程相同,但将相对路径替换为绝对路径。

标签: javascript angularjs frontend relative-path absolute-path


【解决方案1】:

您可以使用基本标记 (https://developer.mozilla.org/en-US/docs/Web/HTML/Element/base) 设置所有相对 URL 的基本路径。

因此,您可以在开发中将基本 href 更改为 static.domain.com 在生产中。

但是,基本标记有点晦涩,我不建议将它用于严肃的工作。

其他想法:

您能否使用您的主机文件将 static.testdomain.com 重定向到您的本地环境。

您能否使用环境变量或其他配置设置来更改 javascript 引用。

【讨论】:

【解决方案2】:

最好的方法是让您的服务器根据环境(生产与开发)提供不同的 index.html 文件。如果您目前不使用服务器,您可以考虑使用轻量级 NodeJS。

您甚至可以使用模板引擎(例如 Express + Jade)并根据环境以不同方式构建相同的 index.html 文件。

【讨论】:

  • 应用程序应该和后端分离,只是一个AngularJS应用程序本身与后端进行REST通信
  • @MatheusLima 您的客户端需要从服务器获取应用程序。这不一定是应用程序的后端,但它仍然是为资产服务的东西。
猜你喜欢
  • 2012-01-11
  • 2018-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-25
  • 1970-01-01
  • 2010-09-15
  • 2013-04-17
相关资源
最近更新 更多