vue解析markdown文件并展示(代码高亮+代码行号显示)

因为项目需要吧!然后让我看下 vue 解析 markdown 文件怎么处理

然后我就开始了茫茫求学路 茫茫百度谷歌之旅
在这里插入图片描述
为时不知道多少天,总算搞出点效果了吧!!记录一下


搜的时候看到了很多插件,最后用的是 vue-markdown-loader

下载相关依赖

markdown插件

npm i vue-markdown-loader@0 -D

markdown样式表

npm install --save github-markdown-css 

代码高亮及行号的依赖

npm install --save highlightjs-line-numbers.js

相关配置

webpack.base.config.js 文件里添加:

{
        test: /\.md$/,
        loader: 'vue-markdown-loader',
        options: {
          preprocess: function (MarkdownIt, Source) {
            MarkdownIt.renderer.rules.table_open = function () {
              return '<div class="table-container"><table class="table">';
            };
            MarkdownIt.renderer.rules.table_close = function () {
              return '</table></div>';
            };
            return Source;
          }
        }
 }

相关页面

我这里用的是 App.vue 页面
引入:

import 'highlight.js/styles/github.css'
import 'github-markdown-css'

把之前的 id = "app" 改成 class = "markdown-body" 以匹配样式表

样式

index.html 文件加入以下代码

 <link href="https://cdn.bootcss.com/highlight.js/9.6.0/styles/atelier-lakeside-dark.min.css" rel="stylesheet"/>
 <script src="//cdn.bootcss.com/highlight.js/9.11.0/highlight.min.js"></script>
 <script>hljs.initHighlightingOnLoad();</script>
 <script src="//cdn.bootcss.com/highlightjs-line-numbers.js/1.1.0/highlightjs-line-numbers.min.js"></script>
 <script>hljs.initLineNumbersOnLoad();</script>
 //行内数学公式
 <script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.4/MathJax.js?config=TeX-MML-AM_CHTML" type="text/javascript"></script>

行号插件 highlightjs-line-numbers.js 的样式要自己调整一下

    <style>
        .hljs-line-numbers {
            text-align: right;
            //以下3行要加 !important 来避免样式覆盖
            border-right: 1px solid #ccc !important;
            margin-right: 10px !important;
            padding-right: 5px !important;
            color: #999;
            -webkit-touch-callout: none;
            -webkit-user-select: none;
            -khtml-user-select: none;
            -moz-user-select: none;
            -ms-user-select: none;
            user-select: none;
        }
    </style>

页面引入

在这里插入图片描述


这样就差不多ok啦~
可以显示表格、代码高亮、代码行号然后标题图片啥的
但是跨行数学公式还不太行
先这样吧!
看下效果~(部分)
在这里插入图片描述

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
使用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页面,并且代码块会被并且显示号。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值