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

前端 JS ,后端 Java ,使用共享的常量的最佳操作是什么
如果手动同步的话,例如 Java 里面新加了一个常量字符串,然后手动往 JS 代码里面加一个,感觉很麻烦,违反了 DRY 原则。以后在 Java 端改了这个常量,就得去 JS 端改。如果忘了改,就容易出 BUG
1 Mocker1106 Apr 1, 2024 Swagger (OpenAPI) 满足你的需求吗? 在 Java 后端通过编写注释自动生成 Swagger.json ,前端通过 swagger-typescript-api 生成 type-safe 的 http client https://github.com/acacode/swagger-typescript-api |
2 Xu3Xan89YsA7oP64 Apr 1, 2024 可以考虑卷一个通用配置平台 前端经常改的文案也可以用,让产品自己去改 |
3 drymonfidelia Apr 1, 2024 弄个 /api/constants?locale=en_US 前端 onInit 的时候加载到 sessionStorage |
4 07aPzknB16ui9Cp3 Apr 1, 2024 大厂都有配置中心这种东西,中小企业也可以学习一下 |
5 june4 Apr 1, 2024 极简办法是用 json 写常量文件,然后写个小脚本生成 java 常量源码文件 |
6 iorilu Apr 1, 2024 丢到 redis, 前后端都能访问 |
7 lscho Apr 1, 2024 配置中心,前后端都可以拉取 |
8 ccqy66 Apr 1, 2024 via iPhone 有一种事件是通过 idl ,不过前提是前后端通过 idl 来定义协议 |
9 SethShi Apr 1, 2024 楼上的各位应该是理解出问题了, 是要常量, 而不是要共享配置. 比如新加一个 MAX_SIZE=1000, 多端共享, 配置中心是能共享 1000, 那 MAX_SIZE 不还得写吗 你这个无非就是用一种 DSL 生成就好了, 说起 DSL 就不得不说 阿里云 OpenAPI SDK 你可以去看看 |
10 zjsxwc Apr 1, 2024 via Android 方法 1. 在服务端发布版本时,把所有常量与服务端的版本号一起发布,通过接口提供给前端使用。 方法 2. 在编译打包前端代码时,就直接打包进前端代码。 |
11 nkloveni Apr 1, 2024 @seth19960929 楼上应该是理解出问题了, 是要共享配置,而不是光要常量,lz 都说了要改配置同步,要不然出 bug 了 |
12 freemoon Apr 1, 2024 提供接口:/GetShareVarSetting 给前后端调用,通过配置中心或管理后台修改。 |
13 bianhui Apr 2, 2024 前端,后端编译的时候,去配置中心拉取配置文件。 |
14 lovelylain Apr 2, 2024 via Android protobuf enum |
15 zhy0216 Apr 2, 2024 via Android 都用 ts 然后 monorepo |
16 unco020511 Apr 2, 2024 当然是配置中心 |
17 wangtian2020 Apr 2, 2024 共同编辑个 json 文件呗 |
18 waytodelay Apr 2, 2024 数据字典... |
19 Habyss Apr 2, 2024 这不就是几乎每个系统都会有的字典/配置表吗? |
20 JaysonHope Apr 2, 2024 不考虑安全的情况下,我想到简单的方式是写到 cookie 里。 |
21 mikasa1024 Apr 3, 2024 以前也思考过类似的情况,正文中描述的应该是两个问题 1. 配置自动生成静态文件,因为开发期间需要变量名提示。楼上提到的配置中心、接口、字典表不符合这条要求,因为这些都是运行过程中才知道具体的变量名称 2. 配置变量值同步,这一条的意思是只改一个地方其他端自动同步 第二个问题好处理,但是两个问题结合起来感觉没有什么好的方案 一楼提到的这个东西不错,可以解决 api 中参数返回值的前后端同步 |
22 lizy0329 Apr 3, 2024 @wuzzispacelake 有开源 self-host 推荐 吗? |