vue实现md编辑
实现 Markdown 编辑器的方法
在 Vue 中实现 Markdown 编辑器可以通过多种方式完成,以下是几种常见的方法:
使用现成的库
Vue 社区中有许多成熟的 Markdown 编辑器组件可以直接使用:
// 安装依赖
npm install @kangc/v-md-editor
// 在 Vue 项目中引入
import VueMarkdownEditor from '@kangc/v-md-editor';
import '@kangc/v-md-editor/lib/style/base-editor.css';
import githubTheme from '@kangc/v-md-editor/lib/theme/github';
import '@kangc/v-md-editor/lib/theme/style/github.css';
VueMarkdownEditor.use(githubTheme);
Vue.use(VueMarkdownEditor);
<template>
<v-md-editor v-model="text" height="400px"></v-md-editor>
</template>
<script>
export default {
data() {
return {
text: '',
};
},
};
</script>
结合 Markdown 解析器
如果需要更多自定义功能,可以结合 Markdown 解析器实现:
npm install marked highlight.js
<template>
<div class="markdown-editor">
<textarea v-model="rawText"></textarea>
<div v-html="compiledMarkdown"></div>
</div>
</template>
<script>
import marked from 'marked';
import hljs from 'highlight.js';
marked.setOptions({
highlight: function(code, lang) {
if (lang && hljs.getLanguage(lang)) {
return hljs.highlight(lang, code).value;
}
return hljs.highlightAuto(code).value;
},
});
export default {
data() {
return {
rawText: '',
};
},
computed: {
compiledMarkdown() {
return marked(this.rawText);
},
},
};
</script>
<style>
/* 添加必要的样式 */
</style>
使用 Monaco Editor
对于需要类似 VS Code 体验的高级编辑器:
npm install monaco-editor
<template>
<div ref="editor" class="editor"></div>
</template>
<script>
import * as monaco from 'monaco-editor';
export default {
mounted() {
this.editor = monaco.editor.create(this.$refs.editor, {
value: '',
language: 'markdown',
theme: 'vs-dark',
automaticLayout: true,
});
},
beforeDestroy() {
this.editor.dispose();
},
};
</script>
<style>
.editor {
width: 100%;
height: 500px;
}
</style>
功能扩展建议
- 添加工具栏按钮实现常用 Markdown 语法快捷插入
- 实现实时预览功能
- 添加图片上传支持
- 实现代码块语法高亮
- 添加全屏编辑模式
- 支持导出 HTML 或 PDF 格式
注意事项
- 使用 v-html 时要注意 XSS 防护
- 大型文档应考虑性能优化
- 移动端需要特别处理触摸事件
- 需要处理 Markdown 扩展语法的一致性
- 考虑添加撤销/重做功能
以上方法可以根据项目需求灵活选择或组合使用,现成库适合快速开发,自定义方案则提供更多灵活性。







