如何解决:"可方便修改的一级路径"这个需求 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
abcbuzhiming
V2EX    Node.js

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

  •  
  •   abcbuzhiming 2018-12-20 17:16:55 +08:00 3952 次点击
    这是一个创建于 2491 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我们的后端是 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 条回复    2018-12-24 00:49:57 +08:00
    nfroot
        1
    nfroot  
       2018-12-20 18:05:08 +08:00 via Android
    使用相对路径啊,随便放什么目录都可以
    RH
        2
    RH  
       2018-12-20 18:05:13 +08:00
    也许可以全局变量定义一个 window.$APP.asset_prefix,部署时替换为需要的路径。
    annielong
        3
    annielong  
       2018-12-20 18:11:22 +08:00
    如果是有规律的客户要求,就加参数变量,如果随机指定这种,还是硬编码写进去
    imshf
        4
    imshf  
       2018-12-20 18:12:48 +08:00
    为何你的帖子点进来是黑色背景。。
    maichael
      &bsp; 5
    maichael  
       2018-12-20 18:14:40 +08:00
    全局变量呗。
    vishva
        6
    vishva  
       2018-12-20 18:35:10 +08:00
    写一个脚本,每次部署完以后运行一下扫描指定目录中的页面文件,把旧的路径替换成新的
    freed
        7
    freed  
       2018-12-20 18:54:13 +08:00
    @imshf node.js 节点的风格就这样..

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

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

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

    然后源代码里用相对路径去引用对应资源
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3092 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 32ms UTC 11:59 PVG 19:59 LAX 04:59 JFK 07:59
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86