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
    评论
### 回答1: 在 Vue 2 项目使用 Prism 需要以下步骤: 1. 安装 Prism:在项目目录执行 `npm install prismjs` 或 `yarn add prismjs`。 2. 导入 Prism:在需要使用 Prism 的组件导入 Prism,例如:`import Prism from 'prismjs'`。 3. 加载语言文件:在需要使用的语言文件导入,例如:`import 'prismjs/components/prism-javascript'`。 4. 加载样式文件:在项目加载 Prism 的样式文件,例如:`import 'prismjs/themes/prism.css'`。 5. 高亮代码:在模板使用 Prism 的 `highlight` 方法高亮代码,例如:`<pre v-html="highlightedCode"></pre>`,在组件的 JS ,需要在 `mounted` 生命周期调用 Prism的highlight方法,例如`mounted() { this.highlightedCode = Prism.highlight(this.code, Prism.languages.javascript) }` 6.注意:对于需要高亮的内容在页面上最好是通过v-model绑定的变量来渲染,不然高亮不会自动更新 ### 回答2: 在Vue2项目使用Prism,可以按照以下步骤进行操作: 1. 在项目安装Prism依赖,可以通过命令行运行`npm install prismjs`安装。同时,你也可以选择安装需要使用的额外插件,如`npm install prismjs/plugins/line-highlight/prism-line-highlight`,或者下载包含所需插件的完整版本。 2. 在Vue项目的入口文件(通常是main.js)引入Prism。可以通过`import "prismjs";`语句进行引入。若需要使用额外的插件,还需要引入插件的路径,例如`import "prismjs/plugins/line-highlight/prism-line-highlight";`。 3. 在Vue组件使用Prism。可以在需要使用Prism的组件,通过以下步骤进行操作: - 在Vue组件的`<template>`模板使用`<pre>`标签包裹需要高亮显示代码块。 - 在`<pre>`标签内,使用`<code class="language-xxxx">`标签,其`xxxx`是要高亮显示代码语言,例如`html`、`javascript`等。 4. 如果你使用Prism的额外插件,需要在Vue组件的`mounted`生命周期钩子进行初始化,以启用相应的插件。可以使用以下代码进行初始化: ``` mounted() { Prism.highlightAll(); } ``` 5. 最后,在页面就能看到代码块已经被正确地高亮显示了。 总结起来,在Vue2项目使用Prism,需要安装Prism依赖、引入Prism,并在需要的组件使用`<pre><code>`标签包裹代码块,并在mounted钩子进行初始化。这样就能够实现在Vue2项目使用Prism进行代码高亮显示了。 ### 回答3: 在Vue2项目使用Prism的步骤如下: 1. 安装Prism:在终端执行 `npm install prismjs` 命令来安装Prism。 2. 引入Prism:在需要使用Prism的组件,可以通过 `import` 或 `require` 来引入Prism库,如 `import 'prismjs'`。 3. 引入样式文件:Prism还需要相应的样式文件来渲染代码高亮效果。可以在项目的任意位置引入Prism的样式文件,如CSS文件或SASS文件。可以从Prism的官方文档找到样式文件的链接,并将其直接下载到项目。 4. 创建代码块组件:在Vue2项目,可以创建一个代码块组件来展示代码使用Prism进行高亮。在该组件,可以使用`<pre>`标签来包裹要高亮代码,然后为`<pre>`标签添加`language-xxx`的类名(例如`language-javascript`),表示代码的语言类型。 5. 使用Prism指令:可以使用Vue2的自定义指令来调用Prism进行代码高亮。在代码块组件的`<pre>`标签上添加一个自定义指令,例如`v-prism`,并将其值设置为需要高亮的语言类型。然后,在自定义指令使用Prism的API方法对代码块进行高亮处理。 6. 在需要显示代码的地方使用代码块组件:在Vue组件,可以使用代码块组件来展示需要高亮显示代码。通过在代码块组件上绑定数据,可以动态地显示不同的代码。 7. 运行项目:在完成以上步骤后,重新启动Vue2项目,然后就可以在需要的地方看到代码高亮的效果了。 需要注意的是,Prism支持众多的语言类型,可以通过添加不同的类名来指定不同的语言类型,并将代码块组件的`lang`属性绑定到对应语言的类名上。此外,还可以自定义或覆盖Prism的样式来调整代码高亮显示效果。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值