11## 🔧 TODO
22
3- #### 性能优化
3+ ### 性能优化
44
5- ## 1. 全局变量耦合严重
5+ ## [ ] 1. 全局变量耦合严重
66** 文件** : ` shared-i18n-base.js ` , ` domain-rules-manager.js ` , ` popup.js ` 等
77
88组件通过全局变量通信(如 ` domainManagerI18n ` , ` popupI18n ` , ` sendDebugLog ` ),而不是通过依赖注入或参数传递:
@@ -16,14 +16,18 @@ ensureI18n() {
1616}
1717```
1818
19- ## 2. 重复的语言状态管理
19+ ** 验证结果** : ✅ 问题存在于 [ ` domain-rules-manager.js:22 ` ] ( domain-rules-manager.js:22 ) ,使用全局变量 ` domainManagerI18n `
20+
21+ ## [ x] 2. 重复的语言状态管理
2022** 文件** : ` toggle.js ` 和 ` shared-i18n-base.js `
2123
2224两个独立的语言管理逻辑:
2325- ` LanguageToggle ` 类自己管理 ` currentLang ` 和 localStorage
2426- ` BaseI18n ` 也管理 ` currentLang ` 和 localStorage
2527
26- ## 3. 环境判断方式过时
28+ ** 验证结果** : ✅ 问题存在于 [ ` toggle.js:7 ` ] ( toggle.js:7 ) 和 [ ` shared-i18n-base.js:23 ` ] ( shared/shared-i18n-base.js:23 ) ,两者都管理 ` currentLang `
29+
30+ ## [ ] 3. 环境判断方式过时
2731** 文件** : ` shared-i18n-base.js `
2832
2933``` 73:91:shared-i18n-base.js
@@ -36,7 +40,9 @@ _detectLanguage() {
3640
3741现代做法应该分离 Service Worker 和浏览器环境的代码,而不是用标志位判断。
3842
39- ## 4. 动态脚本加载方式过时
43+ ** 验证结果** : ✅ 问题存在于 [ ` shared-i18n-base.js:75 ` ] ( shared/shared-i18n-base.js:75 )
44+
45+ ## [ ] 4. 动态脚本加载方式过时
4046** 文件** : ` shared-i18n-base.js `
4147
4248``` 138:160:shared-i18n-base.js
@@ -52,7 +58,9 @@ _loadScriptForBrowser(src) {
5258
5359应该使用 ES Module 动态导入 ` import() ` 替代创建 script 标签。
5460
55- ## 5. 协议兼容层说明历史债务
61+ ** 验证结果** : ✅ 问题存在于 [ ` shared-i18n-base.js:138-160 ` ] ( shared/shared-i18n-base.js:138 )
62+
63+ ## [ x] 5. 协议兼容层说明历史债务
5664** 文件** : ` shared-actions.js `
5765
5866``` 27:51:shared-actions.js
@@ -65,7 +73,9 @@ if (response?.status === "success") return response;
6573if (response? .success === true ) return response;
6674` ` `
6775
68- ## 6. i18n 回调风格设计过时
76+ **验证结果**: ✅ 问题存在于 [` shared- actions .js : 27 - 51 ` ](shared/shared-actions.js:27)
77+
78+ ## [x] 6. i18n 回调风格设计过时
6979**文件**: ` shared- i18n- base .js `
7080
7181` ` ` 207 : 213 : shared- i18n- base .js
@@ -80,7 +90,9 @@ ready(callback) {
8090
8191现代 JS 直接使用 Promise,不需要回调风格。
8292
83- ## 7. 单例模式过度使用
93+ **验证结果**: ✅ 问题存在于 [` shared- i18n- base .js : 207 - 213 ` ](shared/shared-i18n-base.js:207)
94+
95+ ## [] 7. 单例模式过度使用
8496**文件**: ` domain- rules- manager .js ` , ` background .js `
8597
8698` ` ` 279 : 281 : domain- rules- manager .js
@@ -89,15 +101,22 @@ const domainRulesManager = new DomainRulesManager();
89101
90102单例难以测试,且导出的是实例而非类,限制了灵活性。
91103
92- ## 8. 状态分散管理
104+ **验证结果**: ✅ 问题存在于 [` domain- rules- manager .js : 281 ` ](domain-rules-manager.js:281)
105+
106+ ## [] 8. 状态分散管理
93107全局状态分散在各处:
94108- ` background .js ` : ` autoSwitchEnabled` , ` isInitialized`
95109- ` popup .js ` : ` updateCheckInProgress` , ` updateCheckController`
96110- ` domain- rules- manager .js ` : ` domainCache`
97111
98112没有统一的状态管理方案。
99113
100- #### i18n 系统重构(待完成)
114+ **验证结果**: ✅ 问题存在于:
115+ - [` background .js : 69 - 70 ` ](background.js:69) - ` autoSwitchEnabled` , ` isInitialized`
116+ - [` popup .js : 9 - 10 ` ](popup.js:9) - ` updateCheckInProgress` , ` updateCheckController`
117+ - [` domain- rules- manager .js : 10 ` ](domain-rules-manager.js:10) - ` domainCache`
118+
119+ ### i18n 系统重构(待完成)
101120- [ ] **统一 i18n 实例命名**:将 ` debugI18n` /` popupI18n` /` detectI18n` /` backgroundI18n` 统一为 ` appI18n`
102121 - **原因**:简化 ` getFallbackTranslation` 中的实例检测逻辑,去除多层 typeof 判断
103122 - **涉及文件**:
0 commit comments