Skip to content

整体架构

运行结构

text
CarbonFiberApp (@main)
  |
  +-- AppPreferences (@StateObject)
  |     +-- languageMode ------> L10n
  |     +-- appearanceMode ----> preferredColorScheme
  |     +-- onboardingSeen ----> UserDefaults
  |
  +-- RootView
        +-- HomeView
        +-- SettingsView
              +-- AboutView

CarbonFiberApp 创建唯一的 AppPreferences 实例,并通过 SwiftUI 环境传入视图树。语言选择映射为 Locale,外观选择映射为可选 ColorScheme,因此视图只消费状态,不各自维护偏好副本。

模块职责

模块职责
CarbonFiberApp创建全局偏好、注入环境、声明 iOS/macOS Scene
AppPreferences语言、外观和首次运行状态的单一事实来源
L10n选择本地化 Bundle,并在缺少键时回退到英文
AppTheme提供共享颜色 token 和平台表面色
RootView顶层 Tab 和导航容器,保证设置入口可见
SettingsView修改语言、外观和首次运行状态
LocalJSONStore在 Application Support 中原子读写 Codable JSON

数据分层

偏好数据与产品数据刻意分开:

  • 用户偏好存入 UserDefaults,由 AppPreferences 管理。
  • 业务模型实现 Codable,默认通过 LocalJSONStore 写入 Application Support。
  • SwiftUI View 负责展示与交互,不直接决定文件路径或本地化回退策略。

扩展位置

  • 产品模型:Sources/CarbonFiberApp/Models/
  • 产品业务引擎:Sources/CarbonFiberApp/Engines/
  • 本地持久化:Sources/CarbonFiberApp/Storage/
  • iOS 专用实现:Sources/CarbonFiberApp/Platform/iOS/
  • macOS 专用实现:Sources/CarbonFiberApp/Platform/macOS/

新增目录后同步更新 project.ymlTaskfile.ymlAGENTS.md 和本 Wiki;不要把生成的 project.pbxproj 当作长期修改入口。