Files
aurora-admin/site/end-content/dragupload.vue3.json

69 lines
3.4 KiB
JSON
Raw Permalink 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.
{
"slug": "dragupload",
"end": "vue3",
"curated": true,
"summary": "Vue 3 拖拽上传:拖入或点击选择文件,内部模拟上传进度并生成图片缩略图。",
"usage": [
"本端没有任何 props、emit 与插槽,<KoleDragUpload /> 挂上即用,文件列表由内部 files ref 维护(DragUpload.vue3.vue:25)。",
"拖拽事件用 @dragover.prevent / @drop.prevent 组合,避免浏览器直接打开被拖入的文件(DragUpload.vue3.vue:3)。",
"点击区域通过 file.click() 转发到隐藏的 input[type=file],选完即把 e.target.value 清空,便于重复选同一个文件(DragUpload.vue3.vue:42)。",
"图片且小于 2MB 时用 FileReader.readAsDataURL 生成缩略图,其它类型统一显示「文件」文字(DragUpload.vue3.vue:33)。",
"进度是 setInterval 每 220ms 随机递增的演示数据,到 100 即标记 done 并清除定时器(DragUpload.vue3.vue:44)。"
],
"bestPractices": [
"进度与完成态都是本地模拟,没有真实上传通道,接入后端时需要自行替换 simulate 并接管 files 结构(DragUpload.vue3.vue:44)。",
"删除是按下标 id 过滤数组,id 由时间戳加随机串生成;同批次内不会重复,但长时间挂载后 id 会越来越长(DragUpload.vue3.vue:31)。",
"thumb 只在图片且小于 2MB 时生成,其余类型 key 仍存在但为空串,模板用 v-if 分支渲染占位文字(DragUpload.vue3.vue:10)。"
],
"apiCarrier": {
"kind": "props",
"note": "本端无 defineProps / defineEmits / defineExpose,唯一可用的定制面是模板类名与 is-over 状态类,因此表中列出的是样式钩子而非 prop。",
"table": [
{
"name": "kole-upload-drop",
"type": "class",
"desc": "拖拽投放区容器类名;拖拽经过时附加 is-over 状态类"
},
{
"name": "kole-upload-item",
"type": "class",
"desc": "单个文件行容器,进度条与状态文字均在此基础上挂子类"
},
{
"name": "kole-upload-del",
"type": "class",
"desc": "删除按钮类名,点击后从 files 中移除该行"
},
{
"name": "is-over",
"type": "state class",
"desc": "拖拽悬停态::class=\"{ 'is-over': over }\",可用于高亮投放区"
}
]
},
"a11y": [
"拖拽区是 div + @click,没有 role、tabindex 与键盘处理,纯键盘用户完全无法选择文件;建议由业务在其上叠加真实 button(DragUpload.vue3.vue:3)。",
"隐藏的 file input 用 style=\"display:none\" 且无 label,读屏与键盘都访问不到;进度条只有数字百分比,没有 role=\"progressbar\"(DragUpload.vue3.vue:7)。"
],
"resources": [
{
"file": "frameworks/DragUpload.vue3.vue",
"kind": "Vue 3 组件",
"desc": "dragupload 的 Vue 3(<script setup>)实现源码"
},
{
"file": "frameworks/DragUpload.css",
"kind": "样式",
"desc": "该组件在 PC 端共用的样式表"
}
],
"exampleIds": [
"dragupload-ex-1"
],
"notes": [
"frameworks/DragUpload.vue3.vue:25 — 组件内部维护文件列表,无外部入参",
"frameworks/DragUpload.vue3.vue:29 — 统一入口:生成 id、按类型生成缩略图、推入 files",
"frameworks/DragUpload.vue3.vue:42 — 原生 change 后清空 input 值以便重选同一文件"
]
}