# 🦟 蚊子项目 - 增强版Vue 3组件库
这是蚊子项目的Vue 3增强版组件库,提供完整的错误处理、加载状态管理和更好的用户体验。
## ✨ 新增特性
- 🔒 **错误处理**: 全面的错误处理和用户友好的错误提示
- ⏳ **加载状态**: 自动加载状态管理和骨架屏
- 🔄 **重试机制**: 自动重试和手动重试功能
- 🎨 **主题系统**: 支持明暗主题切换
- 📱 **响应式设计**: 完全响应式布局
- ♿ **无障碍支持**: 支持键盘导航和屏幕阅读器
- 🔧 **TypeScript**: 完整的TypeScript类型定义
## 📦 安装
```bash
npm install @mosquito/vue-enhanced
# 或
yarn add @mosquito/vue-enhanced
# 或
pnpm add @mosquito/vue-enhanced
```
## 🚀 快速开始
### 1. 安装插件
```typescript
// main.ts
import { createApp } from 'vue'
import App from './App.vue'
import MosquitoEnhancedPlugin from '@mosquito/vue-enhanced'
import '@mosquito/vue-enhanced/style.css'
const app = createApp(App)
// 安装插件并配置
app.use(MosquitoEnhancedPlugin, {
baseUrl: 'https://api.your-domain.com',
apiKey: 'your-api-key',
timeout: 10000,
retryCount: 3,
enableLogging: true,
defaultTheme: 'light',
locale: 'zh-CN'
})
app.mount('#app')
```
### 2. 基础使用
```vue
```
## 📖 组件文档
### MosquitoShareButton
增强版的分享按钮组件,支持加载状态、错误处理和多种样式。
#### Props
| 属性 | 类型 | 默认值 | 说明 |
|------|------|--------|------|
| activityId | `number` | - | 活动ID(必需) |
| userId | `number` | - | 用户ID(必需) |
| template | `string` | 'default' | 分享模板 |
| text | `string` | '分享给好友' | 按钮文字 |
| disabled | `boolean` | false | 是否禁用 |
| variant | `'default'\|'primary'\|'secondary'\|'success'\|'danger' | 'primary' | 按钮样式 |
| size | `'sm'\|'md'\|'lg' | 'md' | 按钮大小 |
#### 事件
| 事件 | 参数 | 说明 |
|------|------|------|
| copied | - | 链接已复制到剪贴板 |
| error | `Error` | 获取分享链接失败 |
#### 示例
```vue
```
### MosquitoPosterCard
增强版的海报展示组件,支持加载状态、错误处理和重试机制。
#### Props
| 属性 | 类型 | 默认值 | 说明 |
|------|------|--------|------|
| activityId | `number` | - | 活动ID(必需) |
| userId | `number` | - | 用户ID(必需) |
| template | `string` | 'default' | 海报模板 |
| width | `string` | '300px' | 宽度 |
| height | `string` | '400px' | 高度 |
#### 事件
| 事件 | 参数 | 说明 |
|------|------|------|
| click | - | 海报被点击 |
| error | `Error` | 海报加载失败 |
| loaded | - | 海报加载成功 |
#### 示例
```vue
```
### MosquitoLeaderboard
增强版的排行榜组件,支持分页、错误处理、高亮当前用户等功能。
#### Props
| 属性 | 类型 | 默认值 | 说明 |
|------|------|--------|------|
| activityId | `number` | - | 活动ID(必需) |
| page | `number` | 0 | 页码 |
| size | `number` | 20 | 每页大小 |
| topN | `number` | 10 | 显示前N名 |
| currentUserId | `number` | undefined | 当前用户ID |
#### 事件
| 事件 | 参数 | 说明 |
|------|------|------|
| loaded | `entries[]` | 排行榜数据加载完成 |
| error | `Error` | 排行榜加载失败 |
#### 示例
```vue
```
## 🔧 高级用法
### 错误处理
```vue
```
### 加载状态管理
```vue
```
### 主题配置
```typescript
// main.ts
import MosquitoEnhancedPlugin from '@mosquito/vue-enhanced'
app.use(MosquitoEnhancedPlugin, {
// ...其他配置
defaultTheme: 'dark', // 或 'light'
locale: 'en-US' // 或 'zh-CN'
})
```
## 🧪 测试
```bash
# 运行单元测试
npm run test
# 运行端到端测试
npm run test:e2e
# 运行类型检查
npm run type-check
```
## 📄 许可证
MIT License
## 🤝 贡献
欢迎提交Issue和Pull Request!
1. Fork本项目
2. 创建功能分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 创建Pull Request
## 📞 支持
如果您在使用过程中遇到问题,请:
1. 查看文档和FAQ
2. 提交GitHub Issue
3. 联系我们的技术支持团队