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

2024-04-01 20:35:52 +08:00
 movq

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

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

3282 次点击
所在节点    程序员
22 条回复
Mocker1106
2024-04-01 20:39:41 +08:00
Swagger (OpenAPI) 满足你的需求吗?

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

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

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1028922

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX