# ZYUAS Neo - 企业官网重构项目 > 使用 Vue 3 + TypeScript + Element Plus + Vite + SCSS 构建的企业官方网站 **版本:** v1.1.0 **构建状态:** ✅ 成功 **类型检查:** ✅ 通过 **最后更新:** 2026-02-26 --- ## 📋 目录 1. [项目简介](#-项目简介) 2. [技术栈](#-技术栈) 3. [快速开始](#-快速开始) 4. [项目结构](#-项目结构) 5. [已完成功能](#-已完成功能) 6. [TypeScript 类型系统](#-typescript-类型系统) 7. [设计系统](#-设计系统) 8. [SCSS 样式系统](#-scss-样式系统) 9. [响应式布局](#-响应式布局) 10. [图标使用指南](#-图标使用指南) 11. [开发规范](#-开发规范) 12. [构建与部署](#-构建与部署) 13. [常见问题](#-常见问题) --- ## 📦 项目简介 使用 **Vue 3 + TypeScript + Element Plus + Vite + SCSS** 构建的企业官方网站,替代原有的 Vue 2 + Bootstrap 版本。 ### 技术升级对比 | 组件 | 原版本 | 新版本 | 改进 | |------|--------|--------|------| | 框架 | Vue 2.7.16 | Vue 3.5.25 | Composition API + TypeScript | | 构建工具 | Webpack 4 | Vite 7 | 10x 更快构建 | | UI 框架 | Bootstrap 3 | Element Plus 2.13 | 现代化组件库 | | 路由 | Vue Router 3 | Vue Router 4 | 完整 TS 支持 | | 状态管理 | Vuex 3 | Pinia 3 | 更简洁的 API | | 轮播 | Swiper 4 | Swiper 12 | 最新特性 | | 样式 | CSS | SCSS | 变量 + 混入系统 | | 类型系统 | - | TypeScript 5.9 | 编译时类型检查 | --- ## 🛠️ 技术栈 | 技术 | 版本 | 说明 | |------|------|------| | Vue | 3.5.25 | Composition API + ` ``` ### 可用命令 | 命令 | 说明 | |------|------| | `npm run type-check` | 仅类型检查 | | `npm run build` | 生产构建(含类型检查) | | `npm run build:skip-typecheck` | 跳过类型检查构建 | --- ## 🎨 设计系统 ### 主题色 ```scss $primary-color: #1e73be; // 主色(蓝色) $primary-light: #3b82f6; // 亮蓝 $primary-dark: #185a9d; // 深蓝 $primary-gradient: linear-gradient(135deg, #1e73be, #3b82f6); ``` ### 中性色 ```scss $text-primary: #1a1a1a; // 主文本 $text-regular: #555555; // 常规文本 $text-tertiary: #666666; // 次要文本 $text-muted: #999999; // 弱化文本 ``` ### 间距系统 ```scss $spacer-1: 10px; $spacer-2: 20px; $spacer-3: 30px; $spacer-4: 40px; $spacer-5: 50px; $spacer-6: 60px; ``` ### 圆角与阴影 ```scss // 圆角 $radius-sm: 8px; $radius-md: 12px; $radius-lg: 16px; $radius-xl: 20px; // 阴影 $shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.08); $shadow-md: 0 8px 32px rgba(0, 0, 0, 0.12); $shadow-lg: 0 20px 60px rgba(0, 0, 0, 0.15); ``` --- ## 📐 SCSS 样式系统 ### 变量文件 (`variables.scss`) ```scss // 主题色 $primary-color: #1e73be; $primary-light: #3b82f6; // 中性色 $text-primary: #1a1a1a; $text-regular: #555555; // 间距 $spacer-1: 10px; $spacer-2: 20px; // 断点 $breakpoint-sm: 576px; $breakpoint-md: 768px; $breakpoint-lg: 992px; $breakpoint-xl: 1200px; ``` ### 混入文件 (`mixins.scss`) ```scss // 响应式 @mixin mobile { @media (max-width: 767px) { @content; } } @mixin tablet { @media (min-width: 768px) and (max-width: 991px) { @content; } } @mixin desktop { @media (min-width: 992px) { @content; } } // Flexbox @mixin flex-center { display: flex; align-items: center; justify-content: center; } @mixin flex-between { display: flex; align-items: center; justify-content: space-between; } // 玻璃拟态 @mixin glass-morphism { background: rgba(255, 255, 255, 0.8); border: 1px solid rgba(255, 255, 255, 0.5); backdrop-filter: blur(10px); } ``` ### 在 Vue 文件中使用 ```vue ``` --- ## 📱 响应式布局 ### 容器边距系统 | 断点 | 屏幕宽度 | 容器边距 | 说明 | |------|----------|----------|------| | 桌面端 | > 1200px | 20px | 标准边距 | | 平板端 | 768px - 1200px | 30px | 增加边距 | | 移动端 | < 768px | 20px | 标准边距 | ### 响应式字体 | 元素 | 桌面端 | 平板端 | 移动端 | |------|--------|--------|--------| | 根字体 | 16px | 16px | 14px | | 章节标题 | 36px | 28px | 24px | | 大标题 | 42px | 32px | 28px | ### 断点混入 ```scss // 移动端 (< 768px) @include mobile { .element { // 移动端样式 } } // 平板端 (768px - 991px) @include tablet { .element { // 平板端样式 } } // 桌面端 (>= 992px) @include desktop { .element { // 桌面端样式 } } ``` --- ## 🔣 图标使用指南 ### 已用图标清单 #### 导航组件 | 图标 | 用途 | |------|------| | `ArrowDown`, `ArrowRight` | 下拉菜单、按钮 | | `Menu`, `Close` | 移动端导航 | | `ArrowUp` | 回到顶部 | #### 首页 | 图标 | 用途 | |------|------| | `ArrowLeft`, `ArrowRight` | 轮播图导航 | | `Connection` | 解决方案链接 | | `Star`, `Monitor`, `Picture`, `DataAnalysis` | 技术优势 | | `Service`, `Timer`, `Medal` | 服务优势 | ### 图标使用方式 ```vue ``` ### 类型声明 所有 Element Plus 图标已在 `src/types/vite-env.d.ts` 中声明: ```typescript declare module '@element-plus/icons-vue' { export const ArrowDown: any export const ArrowRight: any export const CircleCheckFilled: any // ... 更多图标 } ``` --- ## 📝 开发规范 ### 组件命名 - 使用 PascalCase(大驼峰) - 页面组件首字母大写 - 公共组件首字母大写 ### TypeScript 代码风格 - 使用 `