Vue中使用editor.md(4):使用prism.js进行代码高亮

0. 背景

使用prism.jseditor.md产生的代码片段进行高亮显示

1. 引入prism.js

1.1 下载

官网地址:https://prismjs.com/index.html

在这里插入图片描述
在这里插入图片描述

1.2 引入项目

在这里插入图片描述

2. 使用

2.1 配置prism

修改babel.config.js

module.exports = {
  presets: [
    '@vue/cli-plugin-babel/preset'
  ],
  plugins: [
    [
      'prismjs',
      {
        languages: ['javascript', 'css', 'markup', 'sql'],
        plugins: ['line-numbers', 'copy-to-clipboard'],
        theme: 'okaidia',
        css: true
      }
    ]
  ]
}

2.2 添加行号和复制

created () {
    this.$nextTick(() => {
      // 添加行号
      const preBlocks = document.querySelectorAll('pre')
      preBlocks.forEach(preBlock => {
        if (!preBlock.classList.contains('line-numbers')) {
          preBlock.classList.add('line-numbers')
        }
        // 设置复制提示
        preBlock.setAttribute('data-prismjs-copy', '复制')
        preBlock.setAttribute('data-prismjs-copy-success', '复制成功')
        preBlock.setAttribute('data-prismjs-copy-timeout', 1000)
        this.$iceLog.log(preBlock.dataset)
      })
      // 渲染完成后,高亮代码
      Prism.highlightAll()
    })
  }

3. 测试

在这里插入图片描述

x. 参考

  1. HTML - 标签自定义属性
  2. 使用 Prism.js 对代码进行语法高亮
  3. Vue解析markdown,并将其展示到页面(代码高亮 + 显示代码行号)
  4. 漂亮的代码语法高亮插件Prism.js简单使用文档
  5. Prism & highlight.js高亮代码 & 手动添加行号 & 一键复制
  6. vue中prismjs实现代码高亮展示行号
<think>嗯,用户想了解如何在Vue2中使用v-md-editor,这是一个Markdown编辑器。首先,我需要回忆一下v-md-editor的版本支持情况。记得v-md-editor有不同的版本,可能对应Vue2和Vue3有不同的包。比如,Vue3可能需要@kangc/v-md-editor,而Vue2可能有一个旧版本或者另一个包。需要确认正确的包名和版本。 然后,用户提到的是Vue2,所以应该检查官方文档是否支持Vue2。可能需要注意安装的版本号,避免安装最新版,因为最新版可能已经不支持Vue2了。比如,可能需要指定版本号,比如1.x版本。 接下来,安装步骤应该是怎样的?通常需要使用npm或者yarn来安装。可能需要安装主包和对应的主题,比如github主题。同时,可能需要引入VueMarkdownEditor使用Vue.use()来注册组件。 然后,在组件中使用时,应该如何在模板里引入?可能需要使用v-model来绑定数据。另外,可能需要引入样式文件,否则编辑器样式不生效。这时候需要确认是否需要单独引入CSS文件。 还有,用户可能想知道如何扩展功能,比如代码高亮。这时候可能需要安装prismjs和对应的语言包,然后在编辑器中配置。可能需要使用VueMarkdownEditor.use()来加载这些扩展。 另外,用户可能会遇到常见问题,比如组件未注册,或者样式丢失,这时候需要检查是否正确引入了组件和样式文件。还有,版本兼容性问题,比如Vue2和Vue3的版本是否搞混了。 需要整理一个步骤清晰的教程,包括安装、引入、基本使用、高级配置和注意事项。确保每一步都明确,比如安装命令、代码示例,以及可能遇到的坑和解决办法。 可能还需要对比Vue2和Vue3的区别,强调用户必须使用适合Vue2的版本。比如,@kangc/v-md-editor的旧版本或者另一个包名。可能需要查阅官方文档或GitHub仓库的README,确认正确的安装命令和版本号。 最后,给出示例代码,展示如何从安装到使用,包括引入组件、注册、模板中的使用,以及如何绑定数据。同时,提醒用户关于样式引入和扩展功能的部分,比如代码高亮和自定义主题。</think>以下为 Vue2 中使用 v-md-editor 的详细教程,分步骤说明: --- ### 一、环境准备 1. 确保已创建 Vue2 项目 ```bash vue create your-project-name # 选择 Vue2 模板 ``` --- ### 二、安装依赖 1. 安装核心包(注意版本兼容性) ```bash npm install @kangc/v-md-editor@1.5.3 --save # 指定适用于 Vue2 的版本 ``` 2. 安装扩展依赖 ```bash npm install prismjs@1.29.0 github-markdown-css --save ``` --- ### 三、基础配置 1. 在 main.js 中全局引入 ```javascript import Vue from 'vue'; import VueMarkdownEditor from '@kangc/v-md-editor'; import 'github-markdown-css'; // 引入 GitHub 风格样式 import 'prismjs/themes/prism.css'; // 代码高亮样式 Vue.use(VueMarkdownEditor); ``` --- ### 四、基础使用示例 ```vue <template> <div class="editor-container"> <v-md-editor v-model="text" height="400px" :mode="mode" @upload-image="handleUploadImage" /> </div> </template> <script> export default { data() { return { text: '# Hello v-md-editor!', // 初始内容 mode: 'edit' // 模式:edit/preview }; }, methods: { handleUploadImage(event, insertImage) { // 实现图片上传逻辑 const file = event.file; // 上传后调用 insertImage(url) } } }; </script> <style scoped> .editor-container { margin: 20px; } </style> ``` --- ### 五、高级功能配置 1. 自定义代码高亮 ```javascript import Prism from 'prismjs'; import 'prismjs/components/prism-java'; import 'prismjs/components/prism-python'; VueMarkdownEditor.use({ extend(md) { md.set({ highlight: (str, lang) => { return Prism.highlight(str, Prism.languages[lang], lang); } }); } }); ``` 2. 切换主题 ```javascript // 更换为深色主题 import '@kangc/v-md-editor/lib/theme/vuepress.css'; VueMarkdownEditor.theme('vuepress'); ``` --- ### 六、常见问题排查 1. **组件未注册警告** - 检查 main.js 是否正确使用 `Vue.use()` - 确认 package.json 中版本号为 `^1.5.3` 2. **样式丢失** - 确保引入了所有 CSS 文件 - 检查 webpack 是否配置了 CSS loader 3. **图片上传失败** ```javascript handleUploadImage(event, insertImage) { // 示例伪代码 uploadToCloud(event.file).then(url => { insertImage({ url: url, desc: '图片描述' }); }); } ``` --- ### 七、版本对照表 | 依赖项 | Vue2 推荐版本 | |---------------------|--------------| | @kangc/v-md-editor | 1.x 系列 | | Vue | 2.6+ | | prismjs | 1.29.0 | --- 通过以上步骤即可在 Vue2 项目中实现 Markdown 编辑功能,如需更多定制可查阅[官方文档](https://code-farmer-i.github.io/vue-markdown-editor/zh/)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值