mirror of
https://github.com/ILoveBingLu/CipherTalk.git
synced 2026-03-20 13:58:38 +08:00
4.5 KiB
4.5 KiB
贡献指南
感谢你对密语 CipherTalk 项目的关注!我们欢迎社区贡献,让这个项目变得更好。
🤝 如何贡献
贡献领域
✅ 欢迎贡献的领域
-
前端界面优化
- React 组件改进
- UI/UX 优化
- 响应式设计
- 无障碍访问性改进
-
样式和主题
- 新主题色彩方案
- CSS 动画效果
- 图标和视觉元素
- 深色模式优化
-
用户体验
- 交互流程优化
- 错误提示改进
- 加载状态优化
- 快捷键支持
-
文档完善
- README 文档
- 代码注释
- 使用教程
- API 文档
-
国际化
- 多语言支持
- 本地化适配
- 文本翻译
-
性能优化
- 组件渲染优化
- 内存使用优化
- 打包体积优化
📋 贡献流程
1. 准备工作
# Fork 项目到你的 GitHub 账号
# 克隆你的 fork
git clone https://github.com/ILoveBingLu/miyu.git
cd miyu
# 安装依赖
npm install
# 创建新分支
git checkout -b feature/your-feature-name
2. 开发环境
# 启动开发服务器
npm run dev
# 运行类型检查
npx tsc --noEmit
# 运行代码格式化
npx prettier --write src/
3. 提交代码
# 添加修改的文件
git add .
# 提交代码(请使用有意义的提交信息)
git commit -m "feat: 添加新的主题色彩方案"
# 推送到你的 fork
git push origin feature/your-feature-name
4. 创建 Pull Request
- 在 GitHub 上打开你的 fork
- 点击 "New Pull Request"
- 选择目标分支(通常是
main) - 填写 PR 描述,说明你的修改内容
- 提交 PR 等待审核
📝 代码规范
TypeScript 规范
- 使用 TypeScript 严格模式
- 为所有函数和变量提供类型注解
- 使用接口定义复杂对象类型
- 避免使用
any类型
// ✅ 好的示例
interface UserInfo {
id: string
name: string
avatar?: string
}
const getUserInfo = (userId: string): Promise<UserInfo> => {
// 实现
}
// ❌ 避免的写法
const getUserInfo = (userId: any): any => {
// 实现
}
React 组件规范
- 使用函数组件和 Hooks
- 组件名使用 PascalCase
- Props 接口以组件名 + Props 命名
- 使用 memo 优化性能关键组件
// ✅ 好的示例
interface ChatMessageProps {
message: string
timestamp: number
sender: string
}
const ChatMessage: React.FC<ChatMessageProps> = ({ message, timestamp, sender }) => {
return (
<div className="chat-message">
<span className="sender">{sender}</span>
<p className="content">{message}</p>
<time className="timestamp">{new Date(timestamp).toLocaleString()}</time>
</div>
)
}
export default React.memo(ChatMessage)
CSS/SCSS 规范
- 使用 BEM 命名规范
- 优先使用 CSS 变量
- 避免深层嵌套(最多 3 层)
- 使用语义化的类名
// ✅ 好的示例
.chat-message {
padding: var(--spacing-md);
border-radius: var(--border-radius);
&__sender {
font-weight: bold;
color: var(--color-primary);
}
&__content {
margin: var(--spacing-sm) 0;
line-height: 1.5;
}
&--highlighted {
background-color: var(--color-highlight);
}
}
🐛 报告问题
提交 Issue 前请检查
- 搜索现有 Issues,避免重复提交
- 确保问题与开源部分相关
- 提供详细的复现步骤
- 包含系统环境信息
Issue 模板
## 问题描述
简要描述遇到的问题
## 复现步骤
1. 打开应用
2. 点击某个按钮
3. 看到错误信息
## 期望行为
描述你期望发生的情况
## 实际行为
描述实际发生的情况
## 环境信息
- 操作系统: Windows 11
- Node.js 版本: 18.17.0
- 应用版本: 1.0.1
## 截图
如果适用,请添加截图来帮助解释问题
🎯 优先级指南
我们特别欢迎以下类型的贡献:
高优先级
- 🐛 修复 UI 相关的 bug
- ♿ 无障碍访问性改进
- 🌍 国际化和本地化
- 📱 响应式设计优化
中优先级
- ✨ 新的 UI 组件
- 🎨 主题和样式改进
- 📖 文档完善
- 🔧 开发工具改进
低优先级
- 🧹 代码重构(需要充分理由)
- 📦 依赖更新
- 🎯 性能优化(需要基准测试)
📞 联系我们
如果你有任何问题或建议,可以通过以下方式联系我们:
- 🐛 GitHub Issues
🙏 致谢
感谢所有贡献者的努力!你们的贡献让这个项目变得更好。
再次感谢你的贡献!让我们一起打造更好的密语 CipherTalk!