Skip to content

Commit 77684e8

Browse files
committed
feat: 给所有 md 文件生成的文档添加代码复制按钮
1 parent c14ac91 commit 77684e8

File tree

5 files changed

+30
-10
lines changed

5 files changed

+30
-10
lines changed

src/components/AppMarkdown.vue

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,12 @@
55
import { ref } from 'vue';
66
import CategorySecond from '../../components/CategorySecond.vue';
77
import { useRoute, useProps } from 'vue-router';
8-
import { setTitle } from '../../utils/utils.js';
9-
import { requestGetJson } from '../utils/utils.js';
10-
import { requestToYaml } from '../utils/utils.js';
8+
import {
9+
setTitle,
10+
requestGetJson,
11+
requestToYaml,
12+
handleCopyCodeSuccess
13+
} from '../../utils/utils.js';
1114
1215
const props = useProps(['mdPath']);
1316
@@ -32,7 +35,7 @@ const newsDate = ref('');
3235
:title="yamlDoc['title']"
3336
:right-text="newsDate"
3437
class="absolute w-[calc(59.5vw-1px)]" />
35-
<v-md-preview :text="mdRes" class="pt-[50px]"></v-md-preview>
38+
<v-md-preview :text="mdRes" class="pt-[50px]" @copy-code-success="handleCopyCodeSuccess" />
3639
</div>
3740
</template>
3841

src/main.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ import { install as VueMonacoEditorPlugin } from '@guolao/vue-monaco-editor';
99
import VMdPreview from '@kangc/v-md-editor/lib/preview';
1010
import '@kangc/v-md-editor/lib/style/preview.css';
1111
import vuepressTheme from '@kangc/v-md-editor/lib/theme/vuepress.js';
12+
import createCopyCodePlugin from '@kangc/v-md-editor/lib/plugins/copy-code/index';
13+
import '@kangc/v-md-editor/lib/plugins/copy-code/copy-code.css';
1214
import '@kangc/v-md-editor/lib/theme/style/vuepress.css';
1315
import './css/index.scss';
1416
import './css/element-plus.scss';
@@ -47,6 +49,9 @@ VMdPreview.use(vuepressTheme, {
4749
Prism
4850
});
4951

52+
// copy code
53+
VMdPreview.use(createCopyCodePlugin());
54+
5055
// highlightjs
5156
import 'highlight.js/styles/stackoverflow-light.css';
5257
// import hljs from 'highlight.js/lib/core';

src/pages/mdView/MdView.vue

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,12 @@
22
import { ref } from 'vue';
33
import CategorySecond from '../../components/CategorySecond.vue';
44
import { useRoute } from 'vue-router';
5-
import { setTitle } from '../../utils/utils.js';
6-
import { requestToYaml, requestGetJson } from '../../utils/utils.js';
5+
import {
6+
setTitle,
7+
requestToYaml,
8+
requestGetJson,
9+
handleCopyCodeSuccess
10+
} from '../../utils/utils.js';
711
812
const mdRes = ref();
913
const route = useRoute();
@@ -28,7 +32,7 @@ const newsDate = ref('');
2832
:title="yamlDoc['title']"
2933
:right-text="newsDate"
3034
class="absolute w-[calc(59.5vw-1px)]" />
31-
<v-md-preview :text="mdRes"></v-md-preview>
35+
<v-md-preview :text="mdRes" @copy-code-success="handleCopyCodeSuccess" />
3236
</div>
3337
</template>
3438

src/pages/news/NewsDetail.vue

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,12 @@
22
import { ref } from 'vue';
33
import CategorySecond from '../../components/CategorySecond.vue';
44
import { useRoute } from 'vue-router';
5-
import { setTitle } from '../../utils/utils.js';
6-
import { requestGetJson, requestToYaml } from '../../utils/utils.js';
5+
import {
6+
setTitle,
7+
requestGetJson,
8+
requestToYaml,
9+
handleCopyCodeSuccess
10+
} from '../../utils/utils.js';
711
812
const mdRes = ref();
913
const route = useRoute();
@@ -29,7 +33,7 @@ const newsDate = ref('');
2933
:title="yamlDoc['title']"
3034
:right-text="newsDate"
3135
class="sticky top-0 z-1" />
32-
<v-md-preview :text="mdRes"></v-md-preview>
36+
<v-md-preview :text="mdRes" @copy-code-success="handleCopyCodeSuccess" />
3337
</div>
3438
</template>
3539

src/utils/utils.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,3 +140,7 @@ export const useHighlightWatch = (switchHash) => {
140140
switchHash();
141141
});
142142
};
143+
144+
export const handleCopyCodeSuccess = () => {
145+
ElMessage.success('复制成功');
146+
};

0 commit comments

Comments
 (0)