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

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

  •  
  •   movq · 2024-04-01 20:35:52 +08:00 · 2973 次点击
    这是一个创建于 370 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

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


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