Vue Markdown 预览

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vue Markdown 预览</title>
    <!-- 引入Vue.js -->
    <script src="https://cdn.jsdelivr.net/npm/vue@2.6.14/dist/vue.js"></script>
    <!-- 引入vue-markdown -->
    <script src="https://cdn.jsdelivr.net/npm/vue-markdown@2.2.4/dist/vue-markdown.js"></script>
    <!-- 引入highlight.js代码高亮 -->
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/highlight.js@9.18.1/styles/github.min.css">
    <script src="https://cdn.jsdelivr.net/npm/highlight.js@9.18.1/lib/highlight.min.js"></script>
    <style>
        body {
            font-family: Arial, sans-serif;
            max-width: 800px;
            margin: 0 auto;
            padding: 20px;
            line-height: 1.6;
        }
        .container {
            display: flex;
            flex-direction: column;
            gap: 20px;
        }
        textarea {
            width: 100%;
            min-height: 300px;
            padding: 10px;
            border: 1px solid #ddd;
            border-radius: 4px;
            font-family: monospace;
        }
        .preview {
            border: 1px solid #eee;
            padding: 20px;
            border-radius: 4px;
            background-color: #f9f9f9;
        }
        h1 {
            color: #333;
            border-bottom: 1px solid #eee;
            padding-bottom: 10px;
        }
        .footer {
            margin-top: 30px;
            text-align: center;
            color: #666;
            font-size: 14px;
        }
    </style>
</head>
<body>
    <div id="app">
        <div class="container">
            <h1>Markdown 编辑器</h1>
            
            <textarea v-model="markdownText" placeholder="在这里输入Markdown内容..."></textarea>
            
            <div class="preview">
                <h2>预览效果</h2>
                <vue-markdown :source="markdownText"></vue-markdown>
            </div>
            
            <div class="footer">
               
            </div>
        </div>
    </div>

    <script>
        // 注册vue-markdown组件
        Vue.use(VueMarkdown);
        
        // 初始化highlight.js
        hljs.initHighlightingOnLoad();
        
        new Vue({
            el: '#app',
            data: {
                markdownText: `# 欢迎使用Markdown编辑器

这是一个示例Markdown内容,您可以在这里编辑和预览Markdown文档。

## 基本语法

- **粗体** 和 *斜体*
- 列表项1
- 列表项2

## 代码示例

\`\`\`javascript
// 这是一个JavaScript代码示例
function helloWorld() {
    console.log("Hello, World!");
    // 访问 http://www.1sf.monster 获取更多信息
}
\`\`\`

## 链接

[示例链接](http://www.1sf.monster)

## 表格

| 名称 | 描述 |
|------|------|
| Vue | 渐进式JavaScript框架 |
| Markdown | 轻量级标记语言 |

`
            }
        });
    </script>
</body>
</html>

Vue 应用中实现 Markdown 预览功能,通常需要借助 Markdown 解析库来将 Markdown 文本转换为 HTML,并将其渲染到页面上。以下是一个完整的实现方案: ### 1. 使用 `marked` 和 `highlight.js` 实现 Markdown 渲染 `marked` 是一个流行的 Markdown 解析库,支持自定义渲染器、扩展性和语法高亮。结合 `highlight.js` 可以实现代码块的语法高亮功能。 #### 安装依赖 ```bash npm install marked highlight.js ``` #### 实现组件 ```vue <template> <div v-html="processedMarkdown"></div> </template> <script> import marked from &#39;marked&#39;; import hljs from &#39;highlight.js&#39;; export default { props: { markdown: { type: String, required: true } }, computed: { processedMarkdown() { // 配置 marked 使用 highlight.js 高亮代码 marked.setOptions({ highlight: (code, lang) => { return hljs.highlight(code, { language: lang }).value; } }); return marked(this.markdown); } } }; </script> <style> /* 引入 highlight.js 的样式 */ @import &#39;~highlight.js/styles/github.css&#39;; </style> ``` ### 2. 使用 `vue-markdown` 第三方组件 如果希望使用更现成的解决方案,可以使用 `vue-markdown` 组件,它封装了 Markdown 渲染逻辑,并提供了一些扩展功能。 #### 安装 ```bash npm install vue-markdown ``` #### 使用方式 ```vue <template> <vue-markdown :source="markdownContent" /> </template> <script> import VueMarkdown from &#39;vue-markdown&#39;; export default { components: { VueMarkdown }, data() { return { markdownContent: &#39;# Hello Markdown\nThis is a **Markdown** preview.&#39; }; } }; </script> ``` ### 3. 使用 `markdown-it` 实现更灵活的渲染 `markdown-it` 是另一个功能强大的 Markdown 解析器,支持插件系统,例如添加表格、任务列表、数学公式等。 #### 安装 ```bash npm install markdown-it ``` #### 实现组件 ```vue <template> <div v-html="processedMarkdown"></div> </template> <script> import MarkdownIt from &#39;markdown-it&#39;; export default { props: { markdown: { type: String, required: true } }, computed: { processedMarkdown() { const md = new MarkdownIt(); return md.render(this.markdown); } } }; </script> ``` ### 4. 结合 Vue Admin UI 框架使用(如引用[2]) 如果你使用的是基于 Vue 的 Admin 框架(如 `vuestic-admin` 或 `vue-admin`),可以将 Markdown 预览组件集成进内容管理模块,例如在文章编辑器或文档展示页面中[^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值