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