核心服务
Estimated reading time: 6 minutes本文介绍 maplebirchFramework 的三个核心服务:EventEmitter 事件总线、Logger 日志服务和 LanguageManager 国际化服务。
EventEmitter 事件总线
EventEmitter(通过 maplebirch.tracer 访问)提供事件发布/订阅机制,是框架内部模块间通信的基础。完整 API 参考见 EventEmitter。
API
便捷方法
MaplebirchCore 代理了事件总线的方法,可直接在 maplebirch 上调用:
内置事件
on vs once vs after
on— 每次事件触发都执行once— 仅执行一次后自动移除after— 在事件所有on回调执行完成后执行,执行一次后移除
自定义事件
除内置事件外,可以注册任意自定义事件:
Logger 日志服务
Logger(通过 maplebirch.logger 访问)提供分级日志系统。
日志级别
默认级别为 INFO。设置为 DEBUG 后可以看到所有调试日志。
使用方式
创建模块日志
使用 createlog() 创建带前缀的日志函数:
IDB 配置
日志级别从 IndexedDB 的 settings.DEBUG 键读取。如果 DEBUG 为 true,日志级别自动设为 DEBUG。
LanguageManager 国际化
LanguageManager(通过 maplebirch.lang 访问)提供多语言翻译支持。完整 API 与配置说明见 LanguageManager。
支持的语言
EN— 英语CN— 中文
翻译 API
t() 方法
key— 翻译键space— 如果为true且当前语言为 EN,在结果后添加空格
查找顺序:内存缓存 → 当前语言 → EN 回退 → 第一个可用翻译 → [key]
auto() 方法
反向翻译:根据文本内容查找对应的翻译键,然后返回当前语言的翻译。
查找顺序:缓存 → 内存翻译表全量搜索 → IndexedDB 异步查找
翻译文件格式
支持 JSON 和 YAML 格式:
切换语言
切换语言会:
- 更新
LanguageManager.language - 清除翻译缓存
- 触发
:language事件
数据持久化
翻译数据存储在 IndexedDB 中:
language-translations— 翻译键值对(按模组和语言索引)language-metadata— 文件哈希(用于增量更新检测)language-text_index— 文本反向索引(用于auto()查找)
翻译文件在导入时会计算 SHA-256 哈希,如果文件未变更则跳过导入。
