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

2018-12-20 17:16:55 +08:00
 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 后端的这个上下文路径非常好改,然而到了前端这块就出了大麻烦,如果这个上下文路径是硬编码写在页面上,那改起来就致命了。所以这个问题该怎么办呢,该如何搞出在部署时可以方便修改的一级路径来?
3400 次点击
所在节点    Node.js
22 条回复
nfroot
2018-12-20 18:05:08 +08:00
使用相对路径啊,随便放什么目录都可以
RH
2018-12-20 18:05:13 +08:00
也许可以全局变量定义一个 window.$APP.asset_prefix,部署时替换为需要的路径。
annielong
2018-12-20 18:11:22 +08:00
如果是有规律的客户要求,就加参数变量,如果随机指定这种,还是硬编码写进去
imshf
2018-12-20 18:12:48 +08:00
为何你的帖子点进来是黑色背景。。
maichael
2018-12-20 18:14:40 +08:00
全局变量呗。
vishva
2018-12-20 18:35:10 +08:00
写一个脚本,每次部署完以后运行一下扫描指定目录中的页面文件,把旧的路径替换成新的
freed
2018-12-20 18:54:13 +08:00
@imshf node.js 节点的风格就这样..

V2 在一些节点下有单独的 CSS 样式..游戏.美食之类..
ipwx
2018-12-20 18:56:06 +08:00
Java 传给 JS ?
imn1
2018-12-20 19:00:12 +08:00
哇靠,这个节点的主题不错

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

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

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

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

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

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

© 2021 V2EX