Files
TiktokUI/README.md

2.5 KiB
Raw Permalink Blame History

瞬间 FLOW

Next.js Pages Router + React + TypeScript 的抖音风格单页演示。无登录、无数据库、无后端业务接口。

本地启动

Node.js 22,pnpm 10.28.2:

corepack enable
pnpm install --frozen-lockfile
pnpm dev

浏览器打开 http://localhost:3000 。页面直接铺满浏览器宽度,没有侧栏或固定宽度的播放器外框。手机保留底部导航,电脑使用浮层控制。

上下拖动时,上下两条视频会随鼠标或手指一起移动;轻拖后松开回弹,超过约 19% 屏幕高度或快速甩动则翻页。三条真实页面循环复用,避免切换时闪屏。电脑也支持滚轮、上下方向键及右侧切换按钮。空格暂停,M 切换声音,斜杠搜索。

交互

  • 三段本地 MP4 无限循环切换,单击暂停、双击位置爱心与粒子、拖动进度、静音/开启声音、桌面全屏。
  • 点赞收藏弹性反馈,评论面板滑入滑出,手机评论面板可拖动顶部把手向下关闭;系统减少动态效果设置受到尊重。
  • 点赞、收藏、关注按视频保存在本机 localStorage,无需账号。
  • 搜索默认数据、标签搜索、分享视频专属链接、评论抽屉及本次会话评论。
  • 其他导航提供演示提示,不包含其他业务页面。

重新生成视频

pnpm generate:videos

scripts/generate-videos.mjs 使用 Canvas 绘图和 FFmpeg 生成日落、海岸、霓虹三段 8 秒 H.264/AAC 视频及封面。无外部素材下载;成品已提交,正常构建和运行无需 FFmpeg。音轨为程序生成的轻声合成音,初始静音。

检查与构建

pnpm typecheck
pnpm build
pnpm start

Docker 持久化部署

docker compose up -d --build --wait

默认发布到宿主机 18080 端口,可用 PUBLIC_PORT 覆盖。容器以非 root 用户运行,具有健康检查、日志轮转及 unless-stopped 重启策略。

推送 main 触发 .gitea/workflows/deploy.yml,使用 ces-control 标签 runner 构建并部署。该 runner 必须能访问目标宿主机 Docker daemon 并具备 Compose v2;安全组需允许公网访问所选端口。运行持久性由宿主机 Docker 提供,runner 任务结束不会删除应用容器。若同标签有多个 runner,应由管理员保证标签指向预期部署主机。

后续更新:提交并推送 main 即可。镜像保留提交 SHA 标签,可用 IMAGE_TAG=<旧提交SHA> docker compose up -d --no-build 回滚到该宿主机已保留的镜像。