菜单

参考

相关源文件

本技术参考文档提供了 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

UI 组件参考

相册视图系统

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日期、数字等的格式化区域设置。
langUI 语言
mapSettings地图视图偏好
videoViewerVolume视频播放器音量级别
videoViewerMuted视频是否静音
isShowDetail详细信息面板是否打开
albumViewSettings相册视图偏好
placesViewSettings地点视图偏好
showDeleteModal是否显示删除确认
alwaysLoadOriginalFile是否始终加载原始文件
playVideoThumbnailOnHover鼠标悬停时是否播放视频缩略图
loopVideo视频是否循环播放

来源: web/src/lib/stores/preferences.store.ts39-176

国际化 (i18n) 系统

Immich 通过其国际化系统支持多种语言。有关 i18n 系统的详细信息,请参阅国际化

i18n 系统使用动态导入来仅加载所需的语言文件

来源: web/src/lib/constants.ts267-352 web/src/lib/utils/i18n.ts1-33 web/src/lib/i18n.spec.ts1-51

环境和 Node.js 要求

Immich 的组件需要特定的 Node.js 版本

组件必需的 Node.js 版本
网页界面22.14.0
服务器22.14.0
CLI22.14.0
文档22.14.0
端到端测试 (E2E Tests)22.14.0
TypeScript SDK22.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

设置 UI 组件

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)