abcbuzhiming
V2EX  ›  Node.js

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

  •  
  •   abcbuzhiming · Dec 20, 2018 · 4344 views
    This topic created in 2733 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
        1
    nfroot  
       Dec 20, 2018 via Android
    使用相对路径啊,随便放什么目录都可以
    RH
        2
    RH  
       Dec 20, 2018
    也许可以全局变量定义一个 window.$APP.asset_prefix,部署时替换为需要的路径。
    annielong
        3
    annielong  
       Dec 20, 2018
    如果是有规律的客户要求,就加参数变量,如果随机指定这种,还是硬编码写进去
    imshf
        4
    imshf  
       Dec 20, 2018
    为何你的帖子点进来是黑色背景。。
    maichael
        5
    maichael  
       Dec 20, 2018
    全局变量呗。
    vishva
        6
    vishva  
       Dec 20, 2018
    写一个脚本,每次部署完以后运行一下扫描指定目录中的页面文件,把旧的路径替换成新的
    freed
        7
    freed  
       Dec 20, 2018
    @imshf node.js 节点的风格就这样..

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

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

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

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