# reactBilibiliApp — 项目架构与技术要点
## 项目概述
仿 B 站 React Native 客户端,使用 Expo SDK 55 + expo-router,调用 Bilibili 官方 Web API 获取热门视频、直播、视频详情、弹幕、评论、搜索及扫码登录。
## 技术栈
| 层 | 技术 |
|---|---|
| 框架 | React Native 0.83 + Expo SDK 55 |
| 路由 | expo-router v4(文件系统路由,Stack 导航) |
| 状态管理 | Zustand |
| 网络请求 | Axios |
| 本地存储 | @react-native-async-storage/async-storage |
| 视频播放(详情页/直播) | react-native-video(DASH/HLS/MP4)|
| 视频播放(首页 BigCard) | react-native-video(DASH MPD,内联自动播放) |
| 视频播放(WebView 降级) | react-native-webview(NativeVideoPlayer) |
| 页面滑动 | react-native-pager-view(首页热门/直播 Tab) |
| 图标 | @expo/vector-icons(Ionicons) |
## 目录结构
```
app/
_layout.tsx # 根布局:Stack 导航 + 启动时恢复登录态/下载列表/设置
# 全局挂载
index.tsx # 首页:PagerView 切换热门/直播;绝对定位悬浮导航栏
video/
_layout.tsx # Stack 导航(无头部)
[bvid].tsx # 视频详情页(播放 + 简介/评论/弹幕 三 Tab + 推荐视频 + 下载)
live/
_layout.tsx # Stack 导航(无头部)
[roomId].tsx # 直播详情页(HLS/FLV 播放 + 简介/弹幕 Tab)
search.tsx # 搜索页(关键词搜索视频)
downloads.tsx # 下载管理页(已下载视频列表)
settings.tsx # 设置页(封面图清晰度 + 退出登录)
components/
VideoCard.tsx # 双列视频卡片(封面、标题、UP主、播放量);读 settingsStore 决定图片质量
BigVideoCard.tsx # 全宽视频卡片(首页热门精选),内联 react-native-video 自动播放,
# 支持静音/取消静音、水平滑动快进、进度条/缓冲条
LiveCard.tsx # 直播房间卡片(封面、主播、在线人数、直播状态脉冲点)
LivePulse.tsx # 直播红点动画组件
VideoPlayer.tsx # 视频播放器入口:web →