abcbuzhiming
V2EX  ›  Node.js

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

  •  
  •   abcbuzhiming · Dec 20, 2018 · 4681 views
    This topic created in 2881 days ago, the information mentioned may be changed or developed.
    我们的后端是 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 后端的这个上下文路径非常好改,然而到了前端这块就出了大麻烦,如果这个上下文路径是硬编码写在页面上,那改起来就致命了。所以这个问题该怎么办呢,该如何搞出在部署时可以方便修改的一级路径来?
    22 replies  •  2018-12-24 00:49:57 +08:00
    nfroot
    nfroot
    Dec 20, 2018 via Android
    1
    使用相对路径啊,随便放什么目录都可以
    RH
    RH
    Dec 20, 2018
    2
    也许可以全局变量定义一个 window.$APP.asset_prefix,部署时替换为需要的路径。
    annielong
    annielong
    Dec 20, 2018
    3
    如果是有规律的客户要求,就加参数变量,如果随机指定这种,还是硬编码写进去
    imshf
    imshf
    Dec 20, 2018
    4
    为何你的帖子点进来是黑色背景。。
    maichael
    maichael
    Dec 20, 2018
    5
    全局变量呗。
    vishva
    vishva
    Dec 20, 2018
    6
    写一个脚本,每次部署完以后运行一下扫描指定目录中的页面文件,把旧的路径替换成新的
    freed
    freed
    Dec 20, 2018
    7
    @imshf node.js 节点的风格就这样..

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

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

    或者打包的时候配置文件做逻辑判断 比如 webpack 这种东西 再或者自己写脚本对应修改
    imshf
    imshf
    Dec 21, 2018
    18
    @freed 原来如此,第一次进 Node 节点。。
    nfroot
    nfroot
    Dec 21, 2018
    19
    @abcbuzhiming web 程序相对路径是最方便和安全的,要不你就程序安装时或者每次加载时自动生成这个变量咯,如果你不嫌麻烦的话。
    kevinkim
    kevinkim
    Dec 21, 2018
    20
    可以考虑用 base 标签看看?
    tabris17
    tabris17
    Dec 21, 2018
    21
    @abcbuzhiming html 里的路径通过后端模板生成呗。还有种笨办法就是前端构建时生成,路径变化了再生成发布一次
    LeoEatle
    LeoEatle
    Dec 24, 2018
    22
    没有用 webpack 吗....定义 publicPath 就好了啊

    然后源代码里用相对路径去引用对应资源
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   909 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 49ms · UTC 21:16 · PVG 05:16 · LAX 13:16 · JFK 16:16
    ♥ Do have faith in what you're doing.