Parity Checklist:原 Weex vs 当前 uni-app 实现

May 22, 2026 · View on GitHub

用法:以 docs/legacy-spec.md 为基准,逐页核对当前 uni-app 工程是否落地。 图例:OK 已对齐 / WARN 部分对齐(带 TODO)/ NO 未实现 / N/A 不适用。 验证手段:1) 静态阅读 src/pages 与 components;2) 本地 H5 dev server + Playwright headless(脚本在 %TEMP%/gsy-e2e/e2e.mjs,不在工程内);3) 手动浏览器跑。


1. 路由 / 页面

原工程 (router.js)当前 uni-app (pages.json)状态备注
/ WelcomePagepages/welcome/indexOKnavigationStyle:custom;2s 后 reLaunch 到 main / login
/loginpages/login/indexOK改为 PAT 登录(GitHub 已废 Basic Auth);UI 用 GSY 主题色 + logo
/mainpages/main/indexOK自画 navbar + scroll-view + MainTabBar;events 列表 30 条,e2e 已验证
/main 内嵌 DynamicPagepages/main/index.vue(合一)OK直接把 DynamicPage 合并到 main,简化 keepAlive
/main 内嵌 TrendPagepages/trend/indexOK拆为独立路由,由 MainTabBar 切换;接入 GSY 官方 trend API + 三级回退 + 10 语言 chip;e2e 验证 19 条真实数据
/main 内嵌 PersonPagepages/person/indexOK同上拆为独立路由;UserHeadItem 5 列计数已加分跳
/user/:userName/repository/:reposName RepositoryDetailPagepages/repository-detail/indexOK4 tab + 4 操作 + branch popover;e2e 已验证 4 tab click 可点 + README 不重拉
/user/:userName UserInfoPagepages/user-info/indexOK5 个 bottom-item 已对齐
code CodeDetailPagepages/code-detail/indexOKgenerateHtml / generateCode2Html + Dracula 主题(CDN dracula.min.css + WEB_DRACULA_BACKGROUND_COLOR)已落地
/user/:u/repository/:r/issueNum/:n IssueDetailPagepages/issue-detail/indexOK底部 4 操作栏(回复/编辑/关闭|打开/锁定|解锁)+ 评论长按弹层(编辑/删除/复制)+ scroll-view 分页 + 下拉刷新 + busy mask
/common CommonListPagepages/common-list/indexOK7 种 dataType 分支已打通
/search SearchPagepages/search/indexOK保持原 2 tab(仓库/用户)+ 搜索历史(uni.storage 最多 10 条 + 清空按钮 + 点击回填)
/web WebPagepages/web/indexOKuni web-view + url 透传
/edit EditIssuePagepages/edit-issue/indexOK4 种 type(createIssue/editIssue/commentIssue/editComment)+ 标题/正文输入 + 按 type 切换 navTitle/headerHint/bodyPlaceholder/needTitle/端点
/setting SettingPagepages/setting/indexOK关于 cell + 红色"退出登录" 已实现;e2e 已验证 logout 按钮可见
RepositoryDetailInfoPage已删除路由OK在 RepositoryDetailPage 4 tab 内 v-show 实现,独立路由作冗余移除
RepositoryFileListPage已删除路由OK同上
RepositoryIssueListPage已删除路由OK同上

2. Store

模块原 Vuex当前 Pinia状态
useruserInfo / checkoutStatus / initUserInfo / doLogin / getUserInfostores/user.tstoken / userInfo / loading / errorMsg + login/logout/restoreOK
eventreceived_events_data_list / getEventReceived直接在 pages/main/index.vue 内 fetch,未抽 storeWARN 简化但合理;如果将来要跨页共享再抽
repositorytrend_repos / getTrend直接在 pages/trend/index.vue 内 fetchWARN 同上

3. RepositoryDetailPage 4 tab 行为对比

tab原 Weex当前 uni-app状态
README<web :srcdoc=...> 内嵌 GitHub 渲染 HTMLweb-view + readmeSrcDoc,Accept: application/vnd.github.htmlOK
Info(动态/提交)RLList head + 动态/提交切当前合并为"动态" tab;commit/event 切换待确认WARN 需补完"提交"切换
Files面包屑 + RLListbreadcrumb + scroll-view 列表OK
Issues搜索 + Open/Closed/All 过滤 + 浮动+已有 onPickIssueState + addClickOK
4 操作(Star/Watch/Fork/Branch)reposStarClick / reposWatcherClick / reposForkerClick / reposBranchClickonStar / onWatch / onFork / onPickBranchOK
切 tab 不重拉(原 keepAlive)4 个 loaded 标志位 + force 参数OK e2e 验证 round1=1 round2=1

4. 跳转关系(与 legacy-spec §5 对齐)

链路状态备注
Welcome -> main / loginOKreLaunch
Login -> mainOKreLaunch
Main -> SearchOKnavigateTo
Main 动态卡片 -> repository-detailOKe2e 验证
Main -> person tabOKMainTabBar 切换
Person -> settingOKnavigateTo /pages/setting/index
Setting -> 退出 -> loginOKreLaunch;e2e 验证按钮可见
Setting -> 关于(CarGuo/GSYGithubAppWeex)WARN需手动验证
repository-detail Files -> code-detailWARN需手动验证
repository-detail Issues -> issue-detail / edit-issueWARN需手动验证
Common List -> repository-detail / user-infoWARN需手动验证

5. UI / 设计 token 对齐

原值当前状态
主题色#3c3f41$gsy-theme-color in uni.scssOK
actionBlue#267aff#267affOK
miWhite#ececec$gsy-mi-whiteOK
副文字rgba(97,97,97,0.9)$gsy-sub-text-colorOK
iconfont (wxcIconFont)woff/ttfsrc/static/fontOK
卡片宽度 700/710rpx700/710rpx已用 700rpx 卡片样式OK
control-container 圆角 30rpx30rpx30rpxOK
navbar 自画 + 状态栏高度NavigationBar.vuenavigationStyle:custom + statusBarHeight 自计算OK
MainTabBar 自画(iconfont)TabBar.vuecomponents/MainTabBar.vueOK

6. 已知待办(按优先级)

  1. WARN RepositoryDetailPage Info tab 内"动态/提交"二级切换:当前合并为"动态" tab,commit/event 切换尚未补完,与原 Weex 行为略有差异(不影响主路径)
  2. WARN iOS 真机回归:windows 环境无法验证,待 Mac 环境补
  3. WARN 小程序端 e2e:当前自动化仅覆盖 H5,小程序端走 @dcloudio/uni-automator 待加

7. 自动化回归 (Playwright headless)

脚本路径:%TEMP%\gsy-e2e\e2e.mjs(不在工程内,零 cooldown 污染)。 依赖:playwright@1.59.1(>15 天冷却线)+ chromium。 启动:

# 1) 起 dev:h5
cd d:\workspace\project\GSYGithubAppWeex
npm run dev:h5    # 端口默认 8080(被占用会自动顺延 8081/8082...)

# 2) 跑 e2e(用本机 PAT 测试)
cd $env:TEMP\gsy-e2e
$env:E2E_BASE = "http://localhost:8080"
$env:GH_TOKEN = "ghp_xxx..."
node e2e.mjs

最近一次运行(14/14 PASS):

PASS  login: fill PAT
PASS  login: click submit
PASS  login: navigate to main
PASS  main: events cards loaded  -> count=30
PASS  repo-detail: navigated
PASS  repo-detail: tabbar items  -> count=4
PASS  repo-detail: tab click events fired  -> clicks=4
PASS  repo-detail: README fetched first time  -> count=1
PASS  repo-detail: README not refetched on tab back  -> round1=1 round2=1
PASS  setting: logout button visible
PASS  trend: navigated via uni.reLaunch
PASS  trend: filter items  -> count=3
PASS  trend: language chips  -> count=10
PASS  trend: list loaded  -> count=19 (real GSY API data)

artifacts/ 下产物:截图 01-after-welcome.png ~ 06-setting.png + console.log + results.json。