Vue解析markdown,并将其展示到页面(代码高亮 + 显示代码行号)

本文介绍如何在Vue项目中解析Markdown并展示到页面,同时实现代码高亮和行号显示。首先,通过安装依赖并在main.js中引入highlight.js。接着,创建一个全局自定义指令`v-highlight`。在Vue组件中使用该指令,确保添加`markdown-body`类。数据解析后,记得在data中创建空字符串来接收内容,并根据需要调整行号样式。未引入highlight.js的CSS样式将无法实现代码高亮,可在其styles目录下选择并引入。
摘要由CSDN通过智能技术生成

Vue解析markdown,并将其展示到页面(代码高亮 + 显示代码行号),具体步骤如下:

  1. 安装依赖
    在vue项目下打开命令窗口,并输入以下命令:

    // marked 用于将markdown转换成html
    npm install -g marked
    
    // 用于代码高亮显示
    npm install highlight.js
    
    // 代码行号显示插件
    npm install highlightjs-line-numbers.js
    
  2. 在main.js文件中引入highlight.js

    import hljs from 'highlight.js';
    Vue.use(hljs);
    
  3. 同样在main.js文件中,创建一个自定义的全局指令

    //封装成一个指令,highlight是指令的名称
    Vue.directive('highlight', (el) => {
         
      let blocks = el.querySelectorAll('pre code')
      blocks.forEach((block) => {
         
    
    	// 创建ol标签元素
    	let ol = document.createElement("ol");
    
        // 2.根据换行符获取行数,根据获取的行数生成行号
        let rowCount = block.outerHTML.split('\n').length;
        for(
使用Vue3脚手架,可以使用marked库将Markdown文件渲染成HTML页面,并通过highlight.js库实现代码块的高亮行号显示。下面是具体的步骤: 1. 安装所需的库 使用npm或yarn安装marked和highlight.js库: ```shell npm install marked highlight.js --save ``` 2. 创建一个Markdown文件 在src目录下创建一个Markdown文件,例如example.md,用于测试渲染Markdown的功能。 ```markdown # Hello, world! 这是一个示例Markdown文件。 ## 代码块 ```js function hello() { console.log("Hello, world!"); } ``` 以上是一个JavaScript代码块。 ## 列表 - 列表项1 - 列表项2 - 列表项3 ``` 3. 创建一个Markdown组件 在src/components目录下创建一个Markdown组件,例如Markdown.vue,用于渲染Markdown文件。 ```vue <template> <div v-html="markdown"></div> </template> <script> import marked from "marked"; import hljs from "highlight.js"; export default { name: "Markdown", props: { source: String, }, computed: { markdown() { return marked(this.source, { highlight: function (code, lang) { if (lang && hljs.getLanguage(lang)) { return hljs.highlight(lang, code).value; } return hljs.highlightAuto(code).value; }, langPrefix: "hljs language-", breaks: true, gfm: true, }); }, }, }; </script> <style> .hljs-line-numbers { text-align: right; border-right: 1px solid #ccc; color: #999; padding-right: 5px; } </style> ``` 在组件中,我们使用marked库将Markdown文件渲染成HTML页面,通过props属性接受Markdown文件的路径或字符串。同时,我们传递一个highlight函数给marked库,使用highlight.js对代码块进行高亮。另外,我们使用hljs-line-numbers类为代码块添加行号显示。 4. 在页面中使用Markdown组件 在需要显示Markdown文件的页面中,引入Markdown组件,传递Markdown文件的路径或字符串作为source属性的值。 ```vue <template> <div> <Markdown :source="markdown" /> </div> </template> <script> import Markdown from "@/components/Markdown.vue"; import exampleMarkdown from "@/example.md"; export default { name: "App", components: { Markdown, }, data() { return { markdown: exampleMarkdown, }; }, }; </script> ``` 在页面中引入Markdown组件,并将example.md文件作为markdown属性的值传递给Markdown组件。 这样,当页面加载时,Markdown组件将会把example.md文件渲染成HTML页面,并且代码块会被高亮并且显示行号
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值