V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
movq
V2EX  ›  程序员

前后端共享的常量如何统一管理

  •  
  •   movq · 272 天前 · 2760 次点击
    这是一个创建于 272 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前端 JS ,后端 Java ,使用共享的常量的最佳操作是什么

    如果手动同步的话,例如 Java 里面新加了一个常量字符串,然后手动往 JS 代码里面加一个,感觉很麻烦,违反了 DRY 原则。以后在 Java 端改了这个常量,就得去 JS 端改。如果忘了改,就容易出 BUG

    22 条回复    2024-04-03 15:33:57 +08:00
    Mocker1106
        1
    Mocker1106  
       272 天前   ❤️ 1
    Swagger (OpenAPI) 满足你的需求吗?

    在 Java 后端通过编写注释自动生成 Swagger.json ,前端通过 swagger-typescript-api 生成 type-safe 的 http client

    https://github.com/acacode/swagger-typescript-api
    Xu3Xan89YsA7oP64
        2
    Xu3Xan89YsA7oP64  
       272 天前
    可以考虑卷一个通用配置平台
    前端经常改的文案也可以用,让产品自己去改
    drymonfidelia
        3
    drymonfidelia  
       272 天前   ❤️ 1
    弄个 /api/constants?locale=en_US 前端 onInit 的时候加载到 sessionStorage
    07aPzknB16ui9Cp3
        4
    07aPzknB16ui9Cp3  
       272 天前
    大厂都有配置中心这种东西,中小企业也可以学习一下
    june4
        5
    june4  
       272 天前
    极简办法是用 json 写常量文件,然后写个小脚本生成 java 常量源码文件
    iorilu
        6
    iorilu  
       272 天前
    丢到 redis, 前后端都能访问
    lscho
        7
    lscho  
       272 天前
    配置中心,前后端都可以拉取
    ccqy66
        8
    ccqy66  
       272 天前 via iPhone
    有一种事件是通过 idl ,不过前提是前后端通过 idl 来定义协议
    seth19960929
        9
    seth19960929  
       272 天前
    楼上的各位应该是理解出问题了, 是要常量, 而不是要共享配置.
    比如新加一个 MAX_SIZE=1000, 多端共享, 配置中心是能共享 1000, 那 MAX_SIZE 不还得写吗
    你这个无非就是用一种 DSL 生成就好了, 说起 DSL 就不得不说 阿里云 OpenAPI SDK 你可以去看看
    zjsxwc
        10
    zjsxwc  
       272 天前 via Android
    方法 1. 在服务端发布版本时,把所有常量与服务端的版本号一起发布,通过接口提供给前端使用。
    方法 2. 在编译打包前端代码时,就直接打包进前端代码。
    nkloveni
        11
    nkloveni  
       272 天前
    @seth19960929 楼上应该是理解出问题了, 是要共享配置,而不是光要常量,lz 都说了要改配置同步,要不然出 bug 了
    lasuar
        12
    lasuar  
       272 天前
    提供接口:/GetShareVarSetting 给前后端调用,通过配置中心或管理后台修改。
    bianhui
        13
    bianhui  
       271 天前
    前端,后端编译的时候,去配置中心拉取配置文件。
    lovelylain
        14
    lovelylain  
       271 天前 via Android
    protobuf enum
    zhy0216
        15
    zhy0216  
       271 天前 via Android
    都用 ts
    然后 monorepo
    unco020511
        16
    unco020511  
       271 天前
    当然是配置中心
    wangtian2020
        17
    wangtian2020  
       271 天前
    共同编辑个 json 文件呗
    waytodelay
        18
    waytodelay  
       271 天前
    数据字典...
    Habyss
        19
    Habyss  
       271 天前
    这不就是几乎每个系统都会有的字典/配置表吗?
    JaysonHope
        20
    JaysonHope  
       271 天前
    不考虑安全的情况下,我想到简单的方式是写到 cookie 里。
    mikasa1024
        21
    mikasa1024  
       270 天前
    以前也思考过类似的情况,正文中描述的应该是两个问题

    1. 配置自动生成静态文件,因为开发期间需要变量名提示。楼上提到的配置中心、接口、字典表不符合这条要求,因为这些都是运行过程中才知道具体的变量名称

    2. 配置变量值同步,这一条的意思是只改一个地方其他端自动同步

    第二个问题好处理,但是两个问题结合起来感觉没有什么好的方案


    一楼提到的这个东西不错,可以解决 api 中参数返回值的前后端同步
    lizy0329
        22
    lizy0329  
       270 天前
    @wuzzispacelake 有开源 self-host 推荐 吗?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2474 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 15:39 · PVG 23:39 · LAX 07:39 · JFK 10:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.