Files
TiktokUI/README.md
T

54 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 瞬间 FLOW
Next.js Pages Router + React + TypeScript 的抖音风格单页演示。无登录、无数据库、无后端业务接口。
## 本地启动
Node.js 22,pnpm 10.28.2:
```sh
corepack enable
pnpm install --frozen-lockfile
pnpm dev
```
浏览器打开 http://localhost:3000 。页面直接铺满浏览器宽度,没有侧栏或固定宽度的播放器外框。手机保留底部导航,电脑使用浮层控制。
上下拖动时,上下两条视频会随鼠标或手指一起移动;轻拖后松开回弹,超过约 19% 屏幕高度或快速甩动则翻页。三条真实页面循环复用,避免切换时闪屏。电脑也支持滚轮、上下方向键及右侧切换按钮。空格暂停,M 切换声音,斜杠搜索。
## 交互
- 三段本地 MP4 无限循环切换,单击暂停、双击位置爱心与粒子、拖动进度、静音/开启声音、桌面全屏。
- 点赞收藏弹性反馈,评论面板滑入滑出,手机评论面板可拖动顶部把手向下关闭;系统减少动态效果设置受到尊重。
- 点赞、收藏、关注按视频保存在本机 localStorage,无需账号。
- 搜索默认数据、标签搜索、分享视频专属链接、评论抽屉及本次会话评论。
- 其他导航提供演示提示,不包含其他业务页面。
## 重新生成视频
```sh
pnpm generate:videos
```
`scripts/generate-videos.mjs` 使用 Canvas 绘图和 FFmpeg 生成日落、海岸、霓虹三段 8 秒 H.264/AAC 视频及封面。无外部素材下载;成品已提交,正常构建和运行无需 FFmpeg。音轨为程序生成的轻声合成音,初始静音。
## 检查与构建
```sh
pnpm typecheck
pnpm build
pnpm start
```
## Docker 持久化部署
```sh
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` 回滚到该宿主机已保留的镜像。