# 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 →