Vue中如何进行代码高亮与语法着色?

news2024/11/25 15:10:13

Vue中如何进行代码高亮与语法着色?

在Vue的开发过程中,我们经常需要展示代码片段或者进行代码高亮与语法着色。Vue提供了多种方式来实现代码高亮与语法着色,本文将为你详细介绍这些方法。

在这里插入图片描述

1. 使用prism.js进行代码高亮与语法着色

prism.js是一个轻量级的代码高亮和语法着色库,支持多种语言和主题。我们可以在Vue中使用prism.js来实现代码高亮和语法着色。

安装prism.js

我们可以使用npm安装prism.js:

npm install prismjs --save

引入prism.js

在Vue的入口文件中引入prism.js:

import 'prismjs'
import 'prismjs/themes/prism.css'

这里我们引入了prism.js和prism.css,后者是prism.js的主题样式文件,我们可以根据需求选择不同的主题。

使用prism.js

在Vue组件中使用prism.js进行代码高亮和语法着色,我们需要在模板中使用<pre><code>标签,并添加language-xxxx类名,其中xxxx为代码语言,例如language-javascript表示JavaScript语言。

<template>
  <div>
    <pre>
      <code class="language-javascript">
        var message = 'Hello, world!'
        console.log(message)
      </code>
    </pre>
  </div>
</template>

在这个例子中,我们使用了<pre><code>标签来包裹代码片段,并添加了language-javascript类名,表示这是一段JavaScript代码。prism.js会自动识别这个类名,并进行代码高亮和语法着色。

自定义prism.js主题

如果默认的prism.js主题不能满足你的需求,你可以使用prism.js提供的自定义工具生成自定义主题。

首先,我们需要安装prism-themes工具:

npm install prism-themes --save-dev

然后,在命令行中运行以下命令:

./node_modules/.bin/prism-themes --format css --themes tomorrow --out-file themes.css

这个命令会生成一个themes.css文件,包含了多种主题。我们可以在Vue的入口文件中引入这个文件:

import 'prismjs'
import './themes.css'

这里我们将自定义主题文件命名为themes.css,并将其放在了Vue项目的根目录下。你可以根据自己的需求来修改文件名和文件路径。

自定义prism.js语言

如果prism.js默认的语言列表不能满足你的需求,你可以使用prism.js提供的自定义工具生成自定义语言。

首先,我们需要安装prismjs/components工具:

npm install prismjs/components --save-dev

然后,在命令行中运行以下命令:

./node_modules/.bin/prismjs --show-languages

这个命令会列出所有支持的语言。你可以在Vue的入口文件中引入所需的语言模块。

import 'prismjs'
import 'prismjs/components/prism-javascript'

这里我们引入了prism.js的JavaScript语言模块。

2. 使用highlight.js进行代码高亮与语法着色

highlight.js是另一个流行的代码高亮和语法着色库,支持多种语言和主题。我们可以在Vue中使用highlight.js来实现代码高亮和语法着色。

安装highlight.js

我们可以使用npm安装highlight.js:

npm install highlight.js --save

引入highlight.js

在Vue的入口文件中引入highlight.js:

import hljs from 'highlight.js/lib/core'
import 'highlight.js/styles/github.css'

这里我们引入了highlight.js的核心模块和github主题样式文件,你可以根据需要选择不同的主题。

使用highlight.js

在Vue组件中使用highlight.js进行代码高亮和语法着色,我们需要在模板中使用<pre><code>标签,并添加hljsxxx类名,其中xxx为代码语言,例如javascript表示JavaScript语言。

<template>
  <div>
    <pre>
      <code class="hljs javascript">
        var message = 'Hello, world!'
        console.log(message)
      </code>
    </pre>
  </div>
</template>

在这个例子中,我们使用了<pre><code>标签来包裹代码片段,并添加了hljsjavascript类名,表示这是一段JavaScript代码。highlight.js会自动识别这个类名,并进行代码高亮和语法着色。

自定义highlight.js主题

如果默认的highlight.js主题不能满足你的需求,你可以使用highlight.js提供的自定义工具生成自定义主题。

首先,我们需要安装highlight.js的自定义工具:

npm install highlight.js-tools --save-dev

然后,在命令行中运行以下命令:

./node_modules/.bin/hljs -t atom-one-light -d themes

这个命令会生成一个themes文件夹,包含了多种主题。我们可以在Vue的入口文件中引入这个文件夹:

import hljs from 'highlight.js/lib/core'
import 'highlight.js/styles/atom-one-light.css'
import 'highlight.js/lib/languages/javascript'
import './themes/atom-one-light.css'

这里我们将自定义主题文件夹命名为themes,并将其放在了Vue项目的根目录下。你可以根据自己的需求来修改文件夹名和文件路径。

自定义highlight.js语言

如果highlight.js默认的语言列表不能满足你的需求,你可以使用highlight.js提供的自定义工具生成自定义语言。

首先,我们需要安装highlight.js的自定义工具:

npm install highlight.js-tools --save-dev

然后,在命令行中运行以下命令:

./node_modules/.bin/hljs -L

这个命令会列出所有支持的语言。你可以在Vue的入口文件中引入所需的语言模块。

import hljs from 'highlight.js/lib/core'
import 'highlight.js/styles/github.css'
import 'highlight.js/lib/languages/javascript'
import './languages/my-language'

这里我们引入了highlight.js的JavaScript语言模块和自定义语言模块。

结论

在Vue中使用prism.js和highlight.js进行代码高亮和语法着色是非常简单的。你可以根据自己的需求选择不同的库和主题,同时也可以自定义主题和语言。如果你想要更好的代码展示效果,推荐使用这两个库中的一个。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/645069.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mybatis的一级缓存和二级缓存

目录 1、简介 2、Mybatis缓存 3、一级缓存 3.1、初体验测试 3.2、一级缓存失效的四种情况 4、二级缓存 4.1、使用步骤 4.2、结论 5、缓存原理 1、简介 什么是缓存 [ Cache ]&#xff1f; 存在内存中的临时数据。将用户经常查询的数据放在缓存&#xff08;内存&…

gomod在项目中的作用

Part1gomod在golang项目中的作用 1介绍 gomod是Go语言中一个非常重要的工具&#xff0c;它在Golang项目的开发过程中扮演着关键的角色。gomod是模块依赖管理工具&#xff0c;可以帮助开发者更好地管理和组织项目的依赖关系&#xff0c;提供了便捷的方式来管理和升级依赖项。 2为…

gtk实现spice剪切板

重要的函数&#xff1a; void spice_main_channel_clipboard_selection_grab(SpiceMainChannel *channel, guint selection, guint32 *types, int ntypes); 抓取剪切板 void spice_main_channel_clipboard_selection_release(SpiceMainChannel *channel, guint selection); 剪…

软件项目管理需要具备哪些能力?

作为一名软件项目管理者&#xff0c;在处理许多事情时需要不断提高个人在数据分析处理、项目业务流程管理等各个领域的能力。当然作为过来人&#xff0c;我也很清楚很多软件项目管理新人也较为疑惑如何提高自己的能力和专业水平&#xff0c;以便提高工作效率。那我也想与大家唠…

【论文阅读笔记】Local Model Poisoning Attacks to Byzantine-Robust Federated Learning

个人阅读笔记&#xff0c;如有错误欢迎指出&#xff01; 会议&#xff1a; Usenix 2020 [1911.11815] Local Model Poisoning Attacks to Byzantine-Robust Federated Learning (arxiv.org) 问题&#xff1a; 模型攻击对拜占庭鲁棒性联邦学习的攻击效果尚未清楚 创新点&…

SpringBatch从入门到实战(六):ItemReader

一&#xff1a;ListItemReader 用于简单的开发测试。 Bean public ItemReader<String> listItemReader() {return new ListItemReader<>(Arrays.asList("a", "b", "c")); }二&#xff1a;FlatFileItemReader 1.1 完全映射 当文件…

万物云原生下的服务进化 | 京东云技术团队

导读&#xff1a; 在万物云原生下的环境下&#xff0c;Java的市场份额也因耗资源、启动慢等缺点&#xff0c;导致在云原生环境里被放大而降低&#xff0c;通过这篇文章&#xff0c;读者可以更好地了解如何在云原生环境下通过升级相关版本和使用GraalVM打出原生镜像到方式&…

Linux之特殊权限

目录 Linux之特殊权限 SUID 定义 案例 原因 查找真个系统的SUID/SGID文件 SGID 定义&#xff1a; Sticky Bit 案例 设置文件和目录的特殊权限 方法一 使用 chmod命令 方法二 使用数字形式的权限模式 设置新建文件或目录的默认权限 设置修改文件的扩展性 设置文件…

MySQL连接查询——外连接

内连接查询顺序 首先看student和exam表的内容&#xff1a; 然后执行如下内连接查询&#xff1a; explain select a.*,b.* from student a inner join exam b on a.uidb.uid;查询计划如下 由于a表记录数量少为小表做全表扫描&#xff08;rows为6&#xff09;&#xff0c;然后到…

微信小程序标签知识点总结

View 标签 <scroll-view class"scroll_list" scroll-x"true"> 标签 设置 scroll-x/y是可以设置 滚动模式到底是x方向还是Y方向 &#xff08; 需要调整样式&#xff0c;请参考如下 .scroll_list{ border: 1px solid red; width: 240px; white-sp…

算法学习day21

文章目录 530.二叉搜索树的最小绝对差递归 501.二叉搜索树中的众数递归 236.二叉树的最近公共祖先递归 总结 530.二叉搜索树的最小绝对差 给你一个二叉搜索树的根节点 root &#xff0c;返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数&#xff0c;其数值等于两值…

管理类联考——逻辑——知识篇——题型说明

管理类联考基础逻辑—逻辑规划 一、联考中逻辑部分的重要性 管理类综合能力测试的数学、逻辑、写作三个部分中&#xff0c;逻辑是毫无疑问最重要的一部分&#xff0c;体现在以下三个方面&#xff1a; 1、时间分配&#xff1a;逻辑部分的阅读量相当大&#xff0c;30道题的阅读…

2023史上最全java面试题题库大全800题含答案

如果你不停地加班。却很少冒险&#xff0c;也很少学习&#xff0c;那你极大可能会陷入到内卷中。 为什么这么说呢&#xff1f;我们先来捋清楚「内卷」的概念&#xff1a; 「内卷化」简而言之就是&#xff1a;日复一日&#xff0c;越混越掉坑里。 所谓内卷化&#xff0c;指一种社…

HTTP 网络通讯过程

1.知识点&#xff1a; 在计算机网络中&#xff0c;通信协议用于规范数据传输的格式和传送方式。下面是常见的网络通信协议&#xff1a; HTTP协议&#xff1a;超文本传输协议&#xff0c;用于在Web浏览器和Web服务器之间传输HTML文件和其他资源。 HTTPS协议&#xff1a;HTTP安…

《水经注地图服务》如何快速发布经纬度DAT缓存

概述 《水经注地图服务》的快速发布功能是一个能够帮助用户实现快速发布地图服务的功能&#xff0c;并且提供常规情况下大多数用户所需的默认配置&#xff0c;让用户在发布地图时更加便捷。 这里为大家演示如何快速发布经纬度DAT缓存以及如何在水经微图中加载。 准备工作 离…

2023-6-14-第五式原型模式

&#x1f37f;*★,*:.☆(&#xffe3;▽&#xffe3;)/$:*.★* &#x1f37f; &#x1f4a5;&#x1f4a5;&#x1f4a5;欢迎来到&#x1f91e;汤姆&#x1f91e;的csdn博文&#x1f4a5;&#x1f4a5;&#x1f4a5; &#x1f49f;&#x1f49f;喜欢的朋友可以关注一下&#xf…

IDEA中类模板注释和方法注释模板

类注释 /* *ClassName ${NAME} *Author --你的别名 *Description //TODO *Date ${DATE} ${TIME} *Version 1.0 **/ 把上面的代码粘贴到settings-editor-file and code templates下的class的“public class”和#parese的中间 2.方法注释 /* *Author --你的别名 *Description …

ZK+麦克风:反AI音频认证

1. 引言 当前&#xff0c;已越来越难以区分AI生成的音频与人类的声音。可能带来欺诈、身份盗用以及其它滥用问题。 在AI生成的音频可以完美模仿人声的当前环境中&#xff0c;需要一个可靠的信任链——从最初的音频捕获到最终的播放。这种信任链可以使用加密技术建立&#xff…

Java实训日志04

文章目录 八、项目开发实现步骤&#xff08;六&#xff09;创建数据访问接口1、创建学校数据访问接口2、创建状态数据访问接口3、创建学生数据访问接口4、创建用户数据访问接口 八、项目开发实现步骤 &#xff08;六&#xff09;创建数据访问接口 DAO: Data Acess Object - 数…

antd-vue - - - - - upload组件的使用

upload组件的使用 参数说明&#xff1a; file:list : 上传列表数据 name: 上传时的key data: 上传时额外的参数 header: 上传列表数据 actions: 上传接口地址 before-upload: 上传之前的回掉 change: 传文件改变时 // 变量定义updateData: { billId: "", fileType: &…