Skip to content

geiball/-

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Valorant 每日商店 — 微信小程序版

仿无畏契约(VALORANT)国服每日商店的卡牌揭晓动画,微信小程序版本。

Web 版 共享相同的视觉设计语言,但改为纯前端本地数据驱动,无需后端服务。

架构说明

mini-shop/
├── pages/index/index.vue       # 主页面(唯一页面),持有全局状态
├── components/
│   ├── StoreCard.vue           # 卡片组件(核心:5 阶段状态机动画)
│   ├── CountdownBar.vue        # 倒计时栏 + 刷新按钮
│   ├── TopNav.vue              # 顶部导航(预留)
│   └── BottomNav.vue           # 底部导航栏(静态装饰)
├── data/skins.js               # 644 款皮肤数据(来自 valorant-api.com)
├── static/                     # 静态资源(header、占位图、底部导航图)
├── App.vue                     # 应用壳
├── main.js                     # uni-app 入口(createSSRApp)
├── pages.json                  # 页面路由配置
├── manifest.json               # uni-app 清单(含微信 appid)
└── unpackage/dist/dev/mp-weixin/   # 编译产物(微信开发者工具可直接打开)

组件树

App.vue
└── pages/index/index.vue          ← 唯一数据源
    ├── CountdownBar                ← 倒计时 + 刷新触发
    ├── StoreCard × 4               ← 卡片动画
    └── BottomNav                   ← 静态装饰

数据流

用户点击刷新
  → CountdownBar emit('refresh')
  → index.vue openStore()
    → 从 skins.js 随机取 4 款皮肤
    → generation++(触发所有 StoreCard 重置)
    → streak++ → uni.setStorageSync 持久化

generation 作为 prop 传入每个 StoreCard,子组件通过 watch(generation) 触发 resetCard(),实现"一键刷新全部卡片"。

StoreCard 状态机

idle → spread → flash → reveal → display
        800ms    400ms   200ms   400ms
  • idle: 显示未开启占位图
  • spread: 品质色从圆心扩散,同时显示菱形光效
  • flash: 闪光收束
  • reveal: 武器图渐显 + 弹性缩放
  • display: 信息栏上滑 + 品质角标淡入

所有动画通过 setTimeout 链驱动,无第三方动画库。resetCard() 清除所有 timer 并通过 noTransition 标志瞬间回到 idle 态,避免重置时看到动画回退。

与 Web 版的差异

Web 版 小程序版
框架 Vue 3 + Vite uni-app (Vue 3)
数据 Express API + SQLite (819 款) 本地 JS 文件 (644 款)
图片 本地 assets 远程 valorant-api.com CDN
刷新 调后端随机接口 纯前端洗牌
目标平台 浏览器 微信小程序

关键 Prompt 与 Vibe 思路

本项目全程使用 Claude Code 以"vibe coding"方式开发,以下为关键交互策略:

1. 初始搭建 — "照搬 Web 版但换框架"

帮我把这个 Valorant 每日商店项目改成 uni-app 微信小程序版,
组件结构和动画逻辑照搬 Web 版,但数据改成纯前端本地文件

AI 按 Web 版组件树 1:1 映射到 uni-app 语法(<view> 替代 <div>@tap 替代 @clickuni.getStorageSync 替代 localStorage)。

2. 动画微调 — "描述效果,让 AI 推 CSS"

卡片揭晓时需要一个品质色从圆心扩散到全卡的效果,
800ms cubic-bezier,扩散过程中要有菱形光效脉冲

不给具体 CSS 值,只描述视觉预期——AI 自行推导 radial-gradient + box-shadow + @keyframes 实现。

3. 数据迁移 — "给格式示例,批量转换"

Web 版有 819 条皮肤数据在 SQLite/JSON 里,
帮我转成这种格式的 JS 数组(给出一条完整示例),
图片 URL 用 valorant-api.com 的 fullrender.png

AI 自动完成:读取源数据 → 格式转换 → 写入 data/skins.js

4. 细节打磨 — 逐组件迭代

每个组件的迭代模式:

  1. 描述期望效果(不写代码)
  2. AI 出初版
  3. 在微信开发者工具预览
  4. 反馈偏差("菱形太小""颜色不够亮""动画太快")
  5. AI 修正

AI 调用逻辑

本项目使用 Claude Code 作为 AI 编程助手,调用链路:

用户自然语言描述
  → Claude Code CLI (deepseek-v4-pro)
  → 读取项目文件上下文
  → 生成代码(Vue SFC / JS / CSS)
  → 用户写入 → 微信开发者工具实时预览
  → 反馈 → AI 迭代修正
  • 上下文管理:通过 .claude/ 目录中的 CLAUDE.md 维护项目规范,AI 每次对话自动加载
  • Agent 调用:复杂任务(如数据迁移)通过 Claude Code Agent 子进程独立执行,避免污染主对话上下文
  • Skills:使用 resume-bullet-writertech-resume-optimizer 等技能辅助简历项目开发

部署步骤

环境要求

方式一:HBuilderX(推荐)

  1. 用 HBuilderX 打开 mini-shop/ 目录
  2. 点击 运行 → 运行到小程序模拟器 → 微信开发者工具
  3. HBuilderX 自动编译并唤起微信开发者工具
  4. 在微信开发者工具中预览、调试
  5. 点击 发行 → 小程序-微信 即可上传代码并提交审核

方式二:CLI

# 安装 uni-app CLI
npm install -g @dcloudio/uni-app

# 编译到微信小程序
cd mini-shop
uni-app build --platform mp-weixin

# 产物在 unpackage/dist/build/mp-weixin/
# 用微信开发者工具打开该目录即可

或直接使用已有编译产物

仓库已包含 unpackage/dist/dev/mp-weixin/ 目录的编译产物,可直接用微信开发者工具打开该目录预览,无需重新编译。

技术栈

  • 框架: uni-app (Vue 3 Composition API)
  • 平台: 微信小程序 (mp-weixin)
  • 动画: 纯 CSS/JS 状态机,无第三方依赖
  • 数据: 644 款皮肤,图片托管于 valorant-api.com CDN
  • AI 辅助: Claude Code (deepseek-v4-pro)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors