# @winner-fed/plugin-did-you-know

> 你知道吗？WinJS 开发技巧提示插件

## 功能介绍

这是一个为 WinJS 框架提供开发技巧提示的插件。它会在你执行 `setup`、`dev`、`build` 等命令时，随机显示一个有用的开发技巧或最佳实践，帮助你更好地使用 WinJS 框架。

## 特性

- 🎯 **智能提示算法**: 避免重复显示相同的技巧，优先显示未曾提示过的内容
- 🔗 **链接支持**: 提示内容支持链接，可直接跳转到详细文档
- 📱 **多框架支持**: 支持根据不同框架和版本过滤相关技巧
- 💾 **记录缓存**: 自动记录提示历史，避免频繁重复显示
- 🎨 **终端美化**: 支持终端链接美化显示

## 安装

```bash
npm install @winner-fed/plugin-did-you-know --save-dev
```

## 使用方法

### 基本使用

在 `plugin.ts` 文件中启用插件：

```typescript
import { defineConfig } from 'winjs';

export default defineConfig({
  plugins: [
    // ... 其他插件
    '@winner-fed/plugin-did-you-know'
  ]
});
```

### 触发时机

插件会在以下命令执行时自动显示技巧提示：

- `win setup` - 项目初始化时
- `win dev` - 开发服务器启动时  
- `win build` - 项目构建时

### 提示示例

```bash
$ win dev
[你知道吗？] dev 模式下访问 /__win 路由，可以发现很多有用的内部信息

$ win build
[你知道吗？] 想要试试闪电般的构建速度吗？那还不赶紧一键开启 Rsbuild 构建工具：点我查看
```

## 工作原理

### 智能提示算法

1. **内容过滤**: 根据当前框架和版本过滤相关技巧
2. **优先级排序**: 优先显示未曾提示过的内容
3. **频率控制**: 每个技巧最多显示 5 次，避免过度重复
4. **时间记录**: 记录每次显示的时间，避免连续显示相同内容

### 缓存机制

插件会在 `node_modules/.cache/` 目录下创建 `did-you-know.json` 文件，记录提示历史：

```json
{
  "技巧内容": {
    "lastTime": 1704067200000,
    "count": 2
  }
}
```

## 内置技巧

插件内置了丰富的 WinJS 开发技巧，包括：

- 🛠️ **开发调试**: 如何使用 `/__win` 路由查看内部信息
- 📦 **构建优化**: MFSU、代码压缩、产物分析等技巧
- 🎨 **样式处理**: Tailwind CSS、全局样式等配置方法
- 📱 **移动端开发**: 移动端布局、视口配置等
- 🔧 **工具集成**: TypeScript、Prettier、代码检查等配置
- 🚀 **性能优化**: 代码拆分、懒加载等优化技巧
- 📋 **状态管理**: Pinia、Vuex 等状态管理方案

## 自定义技巧

你可以通过修改 `package.json` 中的 `didYouKnow` 字段来自定义技巧内容：

```json
{
  "didYouKnow": [
    {
      "text": "你的自定义技巧内容",
      "url": "https://example.com/docs",
      "majorVersion": 0,
      "framework": ["win"]
    }
  ]
}
```

### 字段说明

- `text`: 技巧的文本内容（支持模板变量）
- `url`: 可选，相关文档链接
- `majorVersion`: 可选，适用的主版本号
- `framework`: 可选，适用的框架列表

### 模板变量

技巧内容支持以下模板变量：

- `%%frameworkName%%`: 当前框架名称（如 WinJS）
- `%%frameworkCliName%%`: 当前框架CLI名称（如 win）

## 配置选项

当前版本插件无需额外配置，开箱即用。

## 开发指南

### 本地开发

```bash
# 安装依赖
npm install

# 开发模式
npm run dev

# 构建
npm run build
```

### 目录结构

```
packages/plugin-did-you-know/
├── src/
│   └── plugin.ts          # 插件主文件
├── compiled/              # 编译后的依赖
├── package.json          # 包配置和技巧数据
└── README.md            # 说明文档
```

## 常见问题

**Q: 如何禁用技巧提示？**
A: 从 `plugin.ts` 中移除该插件即可。

**Q: 技巧显示频率如何控制？**
A: 插件内置智能算法，每个技巧最多显示 5 次，会自动避免重复显示。

**Q: 如何清除提示历史？**
A: 删除 `node_modules/.cache/did-you-know.json` 文件即可重置。

**Q: 提示内容支持多语言吗？**
A: 当前版本仅支持中文，未来版本可能会支持多语言。

## 许可证

MIT License

## 贡献指南

欢迎提交问题和功能建议到 [GitHub Issues](https://github.com/winner-fed/winjs-plugins/issues)。

---

让 WinJS 开发更加高效！🚀
