将各个页面组件中的 styled-components 抽取到独立的样式文件中,提高代码的可维护性和可读性,实现样式与逻辑的分离。
src/pages/styles/
├── HomePage.styled.ts # 首页样式组件
├── ChartsPage.styled.ts # 图表页样式组件
├── AnalysisPage.styled.ts # 分析页样式组件
└── SettingsPage.styled.ts # 设置页样式组件
功能:首页相关的所有样式组件 包含组件:
PageContainer- 页面容器HeroSection- 英雄区域HeroTitle- 英雄标题HeroSubtitle- 英雄副标题FeatureGrid- 功能特性网格FeatureCard- 功能卡片FeatureIcon- 功能图标FeatureTitle- 功能标题FeatureDescription- 功能描述
功能:图表页相关的样式组件 包含组件:
PageContainer- 页面容器PageTitle- 页面标题PageSubtitle- 页面副标题
功能:分析页相关的样式组件 包含组件:
PageContainer- 页面容器PageTitle- 页面标题AnalysisGrid- 分析网格AnalysisCard- 分析卡片CardTitle- 卡片标题CardContent- 卡片内容MetricGrid- 指标网格MetricItem- 指标项MetricValue- 指标值MetricLabel- 指标标签
功能:设置页相关的样式组件 包含组件:
PageContainer- 页面容器PageTitle- 页面标题SettingsGrid- 设置网格SettingsCard- 设置卡片CardTitle- 卡片标题SettingItem- 设置项SettingInfo- 设置信息SettingLabel- 设置标签SettingDescription- 设置描述SettingControl- 设置控件Select- 选择框Input- 输入框Checkbox- 复选框
- 页面组件:专注于业务逻辑和组件结构
- 样式文件:专注于样式定义和主题支持
- 清晰的职责划分:逻辑与样式完全分离
- 样式集中管理:所有样式定义在一个文件中
- 易于修改:修改样式时只需要关注样式文件
- 减少代码重复:避免在多个组件中重复定义样式
- 样式组件复用:可以在其他页面中复用样式组件
- 主题一致性:所有样式都使用统一的主题系统
- 组件化样式:样式组件可以独立测试和维护
- 文件结构清晰:每个页面都有对应的样式文件
- 导入关系明确:页面组件明确导入所需的样式组件
- 易于查找:样式定义位置一目了然
// 页面组件中包含大量样式定义
const PageContainer = styled.div<{ theme: Theme }>`
padding: 2rem;
background: ${props => props.theme.colors.background};
// ... 更多样式
`;
const HeroSection = styled.section`
text-align: center;
// ... 更多样式
`;
// 组件逻辑
const HomePage: React.FC<HomePageProps> = ({ theme }) => {
// 业务逻辑
};// 页面组件专注于业务逻辑
import {
PageContainer,
HeroSection,
// ... 其他样式组件
} from "./styles/HomePage.styled";
const HomePage: React.FC<HomePageProps> = ({ theme }) => {
// 业务逻辑
};每个样式组件只负责一个特定的UI元素
所有样式组件都支持主题切换和主题props
包含必要的媒体查询和响应式布局
提供平滑的过渡效果和悬停状态
使用 TypeScript 确保样式组件的类型安全
- 格式:
{PageName}.styled.ts - 示例:
HomePage.styled.ts
- 使用 PascalCase
- 描述性命名
- 避免缩写
- 使用命名导出
- 按功能分组导入
- 清晰的导入路径
- ✅ TypeScript 编译通过
- ✅ 无 linting 错误
- ✅ Vite 构建成功
- ✅ 样式功能正常
- ✅ 主题切换正常
- ✅ 响应式设计正常
import {
PageContainer,
PageTitle,
AnalysisGrid,
} from "./styles/AnalysisPage.styled";<PageContainer theme={theme}>
<PageTitle theme={theme}>页面标题</PageTitle>
<AnalysisGrid>
{/* 内容 */}
</AnalysisGrid>
</PageContainer>// 在样式文件中添加
export const NewComponent = styled.div<{ theme: Theme }>`
// 样式定义
`;
// 在页面组件中导入和使用
import { NewComponent } from "./styles/PageName.styled";- 可以进一步抽取通用样式组件
- 创建共享的样式组件库
- 支持更多主题变体
- 使用 CSS-in-JS 优化
- 实现样式懒加载
- 添加样式缓存机制
- 样式组件文档生成
- 样式预览工具
- 主题切换预览
- 按功能分组样式组件
- 保持样式文件大小合理
- 避免样式组件过于复杂
- 使用语义化的组件名称
- 保持命名一致性
- 避免样式组件名称冲突
- 避免不必要的样式重计算
- 使用 CSS 变量优化主题切换
- 合理使用 styled-components 特性
现在您的项目具有了更好的代码组织结构,样式与逻辑完全分离,更易于维护和扩展!