From 3a1d1a43eec8b3758e3a63b367c6f1956e22c3e8 Mon Sep 17 00:00:00 2001 From: shay7sev Date: Tue, 10 Mar 2026 14:15:53 +0800 Subject: [PATCH] perf(component): perf --- app/component/base/department/page.tsx | 5 - app/component/base/placement/page.tsx | 33 -- app/component/base/select/page.tsx | 69 --- app/component/label/ffmpeg/README.md | 14 - .../label/ffmpeg/VideoFrameExtractor.tsx | 401 ------------------ app/component/label/ffmpeg/cap.test.ts | 18 - app/component/label/ffmpeg/cap.ts | 14 - app/component/label/ffmpeg/page.tsx | 7 - app/component/label/login/page.tsx | 37 -- app/component/label/picture/page.tsx | 41 -- .../label/picture/standalone/page.tsx | 11 - app/component/layout.tsx | 21 - app/component/media/dynamic/page.tsx | 5 - app/component/media/static/page.tsx | 5 - app/component/page.tsx | 12 - app/component/table/base/page.tsx | 5 - components/label/LabelNossr.tsx | 2 +- .../label/ffmpeg/ffmpeg.worker.ts | 0 .../label/ffmpeg}/processVideo.ts | 6 +- 19 files changed, 3 insertions(+), 703 deletions(-) delete mode 100644 app/component/base/department/page.tsx delete mode 100644 app/component/base/placement/page.tsx delete mode 100644 app/component/base/select/page.tsx delete mode 100644 app/component/label/ffmpeg/README.md delete mode 100644 app/component/label/ffmpeg/VideoFrameExtractor.tsx delete mode 100644 app/component/label/ffmpeg/cap.test.ts delete mode 100644 app/component/label/ffmpeg/cap.ts delete mode 100644 app/component/label/ffmpeg/page.tsx delete mode 100644 app/component/label/login/page.tsx delete mode 100644 app/component/label/picture/page.tsx delete mode 100644 app/component/label/picture/standalone/page.tsx delete mode 100644 app/component/layout.tsx delete mode 100644 app/component/media/dynamic/page.tsx delete mode 100644 app/component/media/static/page.tsx delete mode 100644 app/component/page.tsx delete mode 100644 app/component/table/base/page.tsx rename {app/component => components}/label/ffmpeg/ffmpeg.worker.ts (100%) rename {app/component/label/video2image => components/label/ffmpeg}/processVideo.ts (98%) diff --git a/app/component/base/department/page.tsx b/app/component/base/department/page.tsx deleted file mode 100644 index 2d1e5a3..0000000 --- a/app/component/base/department/page.tsx +++ /dev/null @@ -1,5 +0,0 @@ -"use client" - -export default function ComponentBaseDepartmentPage() { - return <>ComponentBaseDepartmentPage -} diff --git a/app/component/base/placement/page.tsx b/app/component/base/placement/page.tsx deleted file mode 100644 index cb539bf..0000000 --- a/app/component/base/placement/page.tsx +++ /dev/null @@ -1,33 +0,0 @@ -"use client" - -import { - Breadcrumbs, - Divider, - Paper, - Stack, - UnstyledButton, - Text, -} from "@mantine/core" - -export default function ComponentBasePlacementPage() { - const items = [{ title: "布局组件" }].map((item) => ( - {item.title} - )) - - return ( - <> - - {items} - - - - - - - - - - - - ) -} diff --git a/app/component/base/select/page.tsx b/app/component/base/select/page.tsx deleted file mode 100644 index 7141d16..0000000 --- a/app/component/base/select/page.tsx +++ /dev/null @@ -1,69 +0,0 @@ -"use client" - -import TreeSelect from "@/components/tree-select" -import { getCityTree } from "@/components/tree-select/api" -import { TreeNode } from "@/components/tree-select/api/type" -import { VirtualTreeSelect } from "@/components/tree-select/tree" -import { - Breadcrumbs, - Flex, - Paper, - Stack, - TreeNodeData, - UnstyledButton, -} from "@mantine/core" -import { useCallback, useEffect, useState } from "react" - -const convertTreeNodeToTreeNodeData = ( - list: TreeNode[], - level: number = 1 -): TreeNodeData[] => - list.map((g) => ({ - label: g.label, - value: g.value, - nodeProps: { level: level }, - children: - g.children && g.children.length - ? convertTreeNodeToTreeNodeData(g.children, level + 1) - : [], - })) - -export default function ComponentBaseSelectPage() { - const items = [{ title: "选择组件" }].map((item) => ( - {item.title} - )) - - const [value, setValue] = useState("") - - const [treeData, setTreeData] = useState([]) - const asyncGetCityTree = useCallback(async () => { - const res = await getCityTree() - setTreeData(convertTreeNodeToTreeNodeData(res)) - }, []) - - useEffect(() => { - queueMicrotask(() => asyncGetCityTree()) - }, [asyncGetCityTree]) - - return ( - <> - - {items} - - - - - {}} - w={"200px"} - /> - - {value} - - - - ) -} diff --git a/app/component/label/ffmpeg/README.md b/app/component/label/ffmpeg/README.md deleted file mode 100644 index 9878605..0000000 --- a/app/component/label/ffmpeg/README.md +++ /dev/null @@ -1,14 +0,0 @@ -# Video Frame Extractor (FFmpeg.wasm) - -## 运行位置 -- 纯前端:所有转码/抽帧在浏览器 Web Worker + WASM 内完成,不依赖后端服务。 - -## 大文件最佳实践 -- 优先使用 WORKERFS 挂载输入文件,避免 `writeFile(arrayBuffer)` 将整段视频复制进 WASM 内存。 -- 抽帧建议走“单帧模式”:每次 `-ss