如何解决:"可方便修改的一级路径"这个需求

2018 年 12 月 20 日
 abcbuzhiming
我们的后端是 Java。Java 的 web 程序有一个一级上下文路径,每个应用都不同,比如:
Http://xx.xx.xx:/上下文路径 /user/1

为了和后台一致,来区分应用的上下文,我们的前端资源虽然和后端分离,但是访问的时候,也是带有同样的上下文路径的:
Http://xx.xx.xx:/上下文路径 /html/xxx.html
Http://xx.xx.xx:/上下文路径 /img/xxx.png
Http://xx.xx.xx:/上下文路径 /js/xxx.js
Http://xx.xx.xx:/上下文路径 /css/xxx.css

我们在 html 页面里,无论是链接资源,还是访问接口,都是绝对路径,比如:
<a href="/上下文路径 /js/xxx.html">xxxx</a>

但是现在比较坑爹的是,这个上下文路径,在实际部署的时候,可能会因为客户要求,而发生变化。
Java 后端的这个上下文路径非常好改,然而到了前端这块就出了大麻烦,如果这个上下文路径是硬编码写在页面上,那改起来就致命了。所以这个问题该怎么办呢,该如何搞出在部署时可以方便修改的一级路径来?
4593 次点击
所在节点    Node.js
22 条回复
nfroot
2018 年 12 月 20 日
使用相对路径啊,随便放什么目录都可以
RH
2018 年 12 月 20 日
也许可以全局变量定义一个 window.$APP.asset_prefix,部署时替换为需要的路径。
annielong
2018 年 12 月 20 日
如果是有规律的客户要求,就加参数变量,如果随机指定这种,还是硬编码写进去
imshf
2018 年 12 月 20 日
为何你的帖子点进来是黑色背景。。
maichael
2018 年 12 月 20 日
全局变量呗。
vishva
2018 年 12 月 20 日
写一个脚本,每次部署完以后运行一下扫描指定目录中的页面文件,把旧的路径替换成新的
freed
2018 年 12 月 20 日
@imshf node.js 节点的风格就这样..

V2 在一些节点下有单独的 CSS 样式..游戏.美食之类..
ipwx
2018 年 12 月 20 日
Java 传给 JS ?
imn1
2018 年 12 月 20 日
哇靠,这个节点的主题不错

url re-write,把「上下文路径」作为参数
abcbuzhiming
2018 年 12 月 20 日
@nfroot 相对路径在开发中很容易出错,我现在是能不用,就不想用上下文路径
lihongjie0209
2018 年 12 月 20 日
没有反向代理?
aaahhh123
2018 年 12 月 20 日
这背景看的脑壳痛
tabris17
2018 年 12 月 20 日
用配置解决
abcbuzhiming
2018 年 12 月 20 日
@imn1 想过这个方案,然而还是无法接受,太丑陋了,引入了中间环节,更容易出问题
abcbuzhiming
2018 年 12 月 20 日
@tabris17 你如何用配置解决
abcbuzhiming
2018 年 12 月 20 日
@lihongjie0209 当然用了,但是你反向代理解决不了这个问题
TwoDays91
2018 年 12 月 21 日
最简单后台接口告诉你上下文 再 js 动态加载

或者打包的时候配置文件做逻辑判断 比如 webpack 这种东西 再或者自己写脚本对应修改
imshf
2018 年 12 月 21 日
@freed 原来如此,第一次进 Node 节点。。
nfroot
2018 年 12 月 21 日
@abcbuzhiming web 程序相对路径是最方便和安全的,要不你就程序安装时或者每次加载时自动生成这个变量咯,如果你不嫌麻烦的话。
kevinkim
2018 年 12 月 21 日
可以考虑用 base 标签看看?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/519455

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX