Vue中使用Prism来显示代码高亮

话不多少先看效果

 显示效果

项目中有一个需求是在线预览算法文件,最简单的实现就是拿到数据后直接纯文本显示出来,但是作为开发者看习惯了IDE中代码高亮怎么能忍受的了裸眼纯文本呢,所以打算以更美观的方式显示。

Prism是什么?

Prism是一个轻量级的、可扩展的语法高亮器,它是根据现代web标准构建的。它被用于数百万个网站,包括一些你每天访问的网站。

Prism官网

使用步骤

一、安装插件

//安装prismjs插件
npm install prismjs -S

//安装prismjs的编译器插件
npm install babel-plugin-prismjs -D

二、配置插件

在项目的.babelrc文件或babel.config.js中配置使用该插件:

  plugins: [
    ['prismjs', {
      'languages': ['javascript', 'css', 'markup', 'python'],
      'plugins': ['line-numbers'],
      'theme': 'tomorrow',
      'css': true
    }]
  ]

三、在需要展示代码的模块中引用

import Prism from 'prismjs'

在Vue钩子mounted ()中调用

Prism.highlightAll()

四、HTML

1、静态文件直接引用即可

      <pre>
        <code class="language-py line-numbers">
              handleFileClick (a, b, c) {
                if (
                  a['type'] === 'file' &&
                  !a['name'].match('.pyc') &&
                  !a['name'].match('.pth')
                ) {
                  this.showPreview = false
                  this.loadCodePreview(a['path'])
                }
              }
        </code>
      </pre>

2、如果是从服务器请求的数据,那么需要在响应请求后手动再调用Prism.highlightAll(),并且<pre>和<code>最好写在一行,否则代码可能会显示错乱。

<pre><code class="language-py line-numbers">{{ codeContent }}</code></pre>
    loadCodePreview (id, path) {
      this.getAlgorithmPreview({
        id: id,
        path: path
      }).then((res) => {
        this.codeContent = res.data.content
        this.$nextTick(() => {
          Prism.highlightAll()
        })
      }).catch((e) => {
        console.log(e)
        this.$message({
          showClose: true,
          message: '内容获取失败',
          type: 'error'
        })
      })
    }

其中主题是否显示行号都可自己选。

OK,完

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值