本技术参考文档提供了 Immich 代码库中关键组件、常量、枚举和系统的详细信息。它为处理 Immich 代码库的开发人员提供了全面的参考。有关特定于 API 的参考文档,请参阅API 参考,有关国际化系统的详细信息,请参阅国际化。
Immich 使用各种常量和枚举来在整个应用程序中保持一致性。这些主要在 constants.ts 文件中定义。
AppRoute 枚举定义了应用程序中所有可能的路由,按功能区域组织
来源: web/src/lib/constants.ts15-52
资产操作定义了可对媒体资产执行的操作
来源: web/src/lib/constants.ts1-13
来源: web/src/lib/constants.ts54-63 web/src/lib/constants.ts396-400
应用程序使用标准化的查询参数进行路由和状态管理
| 参数 | 目的 |
|---|---|
ACTION | 指定要执行的操作 |
ID | 标识特定项 |
IS_OPEN | 指示组件是否应打开 |
ONBOARDING_STEP | 跟踪入门进度 |
OPEN_SETTING | 指定要打开的设置 |
PREVIOUS_ROUTE | 记录上一个路由 |
QUERY | 保存搜索查询文本 |
SEARCHED_PEOPLE | 记录人员搜索参数 |
SMART_SEARCH | 指示智能搜索是否激活 |
PAGE | 指定当前页码 |
PATH | 保存文件系统路径 |
来源: web/src/lib/constants.ts73-85 web/src/lib/constants.ts87-90
Immich 中的相册可以通过 AlbumViewSettings 接口以各种方式查看、过滤和排序
不同的相册视图模式和配置通过持久化存储进行管理,允许用户偏好在会话之间保存
来源: web/src/lib/stores/preferences.store.ts91-102 web/src/lib/stores/preferences.store.ts122-146 web/src/lib/stores/preferences.store.ts148-156
AlbumCard 和 Albums 等组件使用这些设置来渲染相册视图
来源: web/src/routes/(user)/albums/+page.svelte1-59, web/src/lib/components/album-page/album-card.svelte1-100
Dropdown 组件是一个可重用的 UI 元素,用于显示可选择的选项菜单
来源: web/src/lib/components/elements/dropdown.svelte1-142
Immich 提供了一个全面的主题和偏好系统,可以在会话之间持久化用户设置。
主题系统使用浏览器的 localStorage 来跨会话持久化主题偏好
来源: web/src/lib/stores/preferences.store.ts7-36 web/src/lib/components/user-settings-page/app-settings.svelte42-46
Immich 使用持久化 Svelte stores 存储各种用户偏好
| Preference | 目的 |
|---|---|
locale | 日期、数字等的格式化区域设置。 |
lang | UI 语言 |
mapSettings | 地图视图偏好 |
videoViewerVolume | 视频播放器音量级别 |
videoViewerMuted | 视频是否静音 |
isShowDetail | 详细信息面板是否打开 |
albumViewSettings | 相册视图偏好 |
placesViewSettings | 地点视图偏好 |
showDeleteModal | 是否显示删除确认 |
alwaysLoadOriginalFile | 是否始终加载原始文件 |
playVideoThumbnailOnHover | 鼠标悬停时是否播放视频缩略图 |
loopVideo | 视频是否循环播放 |
来源: web/src/lib/stores/preferences.store.ts39-176
Immich 通过其国际化系统支持多种语言。有关 i18n 系统的详细信息,请参阅国际化。
i18n 系统使用动态导入来仅加载所需的语言文件
来源: web/src/lib/constants.ts267-352 web/src/lib/utils/i18n.ts1-33 web/src/lib/i18n.spec.ts1-51
Immich 的组件需要特定的 Node.js 版本
| 组件 | 必需的 Node.js 版本 |
|---|---|
| 网页界面 | 22.14.0 |
| 服务器 | 22.14.0 |
| CLI | 22.14.0 |
| 文档 | 22.14.0 |
| 端到端测试 (E2E Tests) | 22.14.0 |
| TypeScript SDK | 22.14.0 |
文档系统基于 Docusaurus 构建,需要 Node.js ≥ 20
来源: web/.nvmrc1-2 server/.nvmrc1-2 cli/.nvmrc1-2 docs/.nvmrc1-2 e2e/.nvmrc1-2 open-api/typescript-sdk/.nvmrc1-2 docs/package.json1-62
Immich的设置UI通过不同的设置类别组织成手风琴(accordion)形式。
每个设置组件都与相应的偏好存储和后端 API 进行交互。
来源: web/src/lib/components/user-settings-page/user-settings-list.svelte1-147
Immich的共享系统支持两种主要机制:共享相册和合作伙伴共享。
共享相册会显示其所有者的信息。
来源: web/src/routes/(user)/sharing/+page.svelte1-104/sharing/+page.svelte:1-104)