JMI-OPENATOMJMI-OPENATOM
首页
快速开始
  • 架构概览
  • 项目结构
  • 认证与权限
  • 数据库迁移
  • 配置说明
  • 开发规范
  • 架构概览
  • 项目结构
  • 路由与权限
  • API 请求
  • 组件库
  • UniApp 小程序
  • Docker 部署
  • CI/CD
  • Nginx 反向代理
  • 环境变量
  • QQ 机器人
  • 实验室管理系统
  • API 权限清单
  • 数据库表结构
  • 常见问题
首页
快速开始
  • 架构概览
  • 项目结构
  • 认证与权限
  • 数据库迁移
  • 配置说明
  • 开发规范
  • 架构概览
  • 项目结构
  • 路由与权限
  • API 请求
  • 组件库
  • UniApp 小程序
  • Docker 部署
  • CI/CD
  • Nginx 反向代理
  • 环境变量
  • QQ 机器人
  • 实验室管理系统
  • API 权限清单
  • 数据库表结构
  • 常见问题
  • 前端开发

    • 前端架构概览
    • 前端项目结构
    • 路由与权限
    • API 请求层
    • 组件库
    • UniApp 微信小程序

组件库

组件分类

前端组件按功能和用途分为四大类:

components/
├── admin/      # 管理后台专用组件
├── common/     # 通用组件(前后台共用)
├── site/       # 前台展示专用组件
│   ├── home/   #   首页组件
│   ├── shell/  #   布局壳组件
│   ├── workspace/ # 工作台组件
│   └── blog/   #   博客组件
└── ui/         # 动画 UI 组件(前台装饰)

通用组件(common/)

组件文件说明
页面容器ViewPage.vue统一的页面容器,提供标题、工具栏插槽
工具栏ViewToolbar.vue页面顶部工具栏(搜索、按钮等)
用户头像UserAvatar.vue用户头像组件,支持自定义大小和默认图
状态栏AppStatusBar.vue全局状态栏(加载中、网络状态等)
Markdown 渲染MarkdownContent.vueMarkdown 内容渲染组件
主题切换ThemeToggle.vue明暗主题切换按钮
对话框ElDialog.vueElement Plus Dialog 封装
抽屉ElDrawer.vueElement Plus Drawer 封装

前台组件(site/)

首页组件(site/home/)

组件说明
HomeHero.vue首页 Hero 区域(全屏动画)
HomeHeroField.vueHero 粒子动画场
HomeFocusSection.vue焦点内容区
HomeActivitiesSection.vue活动展示区
HomeAwardsSection.vue获奖展示区
HomePeopleSection.vue人员展示区
HomeMapSection.vue地图展示区(Mapbox)
HomeFeaturedBlogsSection.vue精选博客区
HomeOverviewPage.vue概览页面
HomeInteractiveBackdrop.vue交互背景动画

布局壳组件(site/shell/)

组件说明
SitePageHero.vue前台页面 Hero 区域
SiteSectionHeading.vue区块标题
SiteInfoStrip.vue信息条

工作台组件(site/workspace/)

组件说明
WorkspacePanel.vue工作台面板
WorkspaceHero.vue工作台 Hero

博客组件(site/blog/)

组件说明
BlogCommentItem.vue博客评论项

动画 UI 组件(ui/)

前台使用了一系列自定义动画组件,均采用 Vue 3 组合式 API + GSAP/TailwindCSS 实现:

AuroraBackground(极光背景)

全屏渐变背景动画,用于首页 Hero 区域。

AppleCardCarousel(Apple 卡片轮播)

Apple 风格的 3D 卡片轮播组件,支持:

  • 中心卡片放大效果
  • 模糊背景图片
  • 点击切换

FlipCard(翻转卡片)

3D 翻转卡片,正面显示标题,背面显示详情。

Globe(3D 地球)

基于 cobe 库的 3D 地球组件,用于地图展示区。

Marquee(跑马灯)

无限滚动列表,用于评论、活动等横向滚动展示。

SmoothCursor(平滑光标)

自定义光标跟随效果,平滑插值移动。

其他动画组件

组件说明
PatternBackgroundSVG 图案背景
InteractiveGridPattern交互式网格背景
RadiantText渐变发光文字
LiquidLogoWebGL 液态 Logo 动画
Tetris俄罗斯方块装饰动画
EncryptedText加密文字打字机效果

管理后台组件(admin/)

组件文件说明
菜单偏好AdminMenuPreferences.vue管理后台菜单收藏/排序

Element Plus 集成

管理后台使用 Element Plus 作为 UI 组件库,通过 unplugin-vue-components 自动导入:

// vite.config.ts
Components({
    dts: false,
    resolvers: [ElementPlusResolver({ directives: false, importStyle: 'css' })],
})

注册的插件

// plugins/element-plus.ts
// 注册 Element Plus 需要手动引入的插件(如 ElMessage、ElLoading)

样式系统

TailwindCSS

前台使用 TailwindCSS 3.4 作为主要样式方案,配置了 tailwindcss-animate 插件支持动画。

类名合并

使用 tailwind-merge + clsx 合并 Tailwind 类名,避免冲突:

// lib/utils.ts
import { clsx, type ClassValue } from 'clsx'
import { twMerge } from 'tailwind-merge'

export function cn(...inputs: ClassValue[]) {
    return twMerge(clsx(inputs))
}

设计令牌

前台设计遵循 Apple 风格设计系统,核心设计令牌参考 DESIGN.md:

  • 主色:#0066cc
  • 深色背景:#1d1d1f
  • 浅色背景:#f5f5f7
Prev
API 请求层
Next
UniApp 微信小程序