fix(frontend): 启用 vue-i18n JIT 编译修复消息插值不工作问题
问题:使用 vue-i18n 运行时版本后,带变量的翻译(如 '{days} 天')
无法正确显示,直接显示原始字符串。
原因:运行时版本不含消息编译器,无法在运行时编译消息插值。
解决:启用 JIT 编译(__INTLIFY_JIT_COMPILATION__: true)
- JIT 编译器将消息编译为 AST 对象而非 JavaScript 代码
- 通过解释执行 AST 实现插值,无需 eval 或 new Function
- 符合 CSP script-src 'self' 策略,不降低安全性
同时将 vite.config.js.timestamp-* 临时文件添加到 .gitignore
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -33,6 +33,7 @@ frontend/dist/
|
|||||||
*.local
|
*.local
|
||||||
*.tsbuildinfo
|
*.tsbuildinfo
|
||||||
vite.config.d.ts
|
vite.config.d.ts
|
||||||
|
vite.config.js.timestamp-*
|
||||||
|
|
||||||
# 日志
|
# 日志
|
||||||
npm-debug.log*
|
npm-debug.log*
|
||||||
|
|||||||
@@ -18,6 +18,11 @@ export default defineConfig({
|
|||||||
'vue-i18n': 'vue-i18n/dist/vue-i18n.runtime.esm-bundler.js'
|
'vue-i18n': 'vue-i18n/dist/vue-i18n.runtime.esm-bundler.js'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
define: {
|
||||||
|
// 启用 vue-i18n JIT 编译,在 CSP 环境下处理消息插值
|
||||||
|
// JIT 编译器生成 AST 对象而非 JS 代码,无需 unsafe-eval
|
||||||
|
__INTLIFY_JIT_COMPILATION__: true
|
||||||
|
},
|
||||||
build: {
|
build: {
|
||||||
outDir: '../backend/internal/web/dist',
|
outDir: '../backend/internal/web/dist',
|
||||||
emptyOutDir: true
|
emptyOutDir: true
|
||||||
|
|||||||
Reference in New Issue
Block a user