From ad343567b70245a01b50b1e0b6e366860eacb396 Mon Sep 17 00:00:00 2001 From: bunny <1319900154@qq.com> Date: Sat, 5 Apr 2025 22:32:49 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E4=B8=8B=E8=BD=BD?= =?UTF-8?q?=E5=85=A8=E9=83=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/App.vue | 14 ++++--- src/utils/file.ts | 20 ++++++++++ .../components/generator-preview.vue | 38 ++++++++++++++++++- .../components/generator/hook.ts | 1 + .../components/generator/index.vue | 25 +++++++++++- 5 files changed, 89 insertions(+), 9 deletions(-) create mode 100644 src/utils/file.ts diff --git a/src/App.vue b/src/App.vue index d324fee..59c2c74 100644 --- a/src/App.vue +++ b/src/App.vue @@ -2,16 +2,18 @@ - - - - - + + + + + + + diff --git a/src/utils/file.ts b/src/utils/file.ts new file mode 100644 index 0000000..339f9b6 --- /dev/null +++ b/src/utils/file.ts @@ -0,0 +1,20 @@ +export function downloadTextAsFile(text: string, filename: string) { + // 直接创建 File 对象(比 Blob 更高级) + const file = new File([text], filename, { type: 'text/plain' }); + + // 创建下载链接 + const url = URL.createObjectURL(file); + const a = document.createElement('a'); + a.href = url; + a.download = filename; + console.log(filename); + // 触发下载 + document.body.appendChild(a); + a.click(); + + // 清理 + requestIdleCallback(() => { + document.body.removeChild(a); + URL.revokeObjectURL(a.href); + }); +} diff --git a/src/views/generator-code/components/generator/components/generator-preview.vue b/src/views/generator-code/components/generator/components/generator-preview.vue index 1353011..dde3ab2 100644 --- a/src/views/generator-code/components/generator/components/generator-preview.vue +++ b/src/views/generator-code/components/generator/components/generator-preview.vue @@ -1,9 +1,40 @@ - -