Vite+Vue3+TS中解决PrismJS显示JSON数据不高亮的问题

Vite+Vue3+TS中解决PrismJS显示JSON数据不高亮的问题

在使用prismjs库高亮代码的时候,HTML、JS和CSS都能正常高亮,但是在现实JSON数据的时候就不高亮,经过一番折腾,最后解决办法如下:

必须导入js高亮组件

没错,就是这句

js 复制代码
import "prismjs/components/prism-json"

想要显示舒服的代码字体,可以单独设置字体

css 复制代码
pre {
	span {
	    font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;
	}
	code {
	    font-size: 16px !important;
	}
}

完整代码如下:

js 复制代码
<template>
	<pre class="line-numbers"><code :class="`language-${type}`" v-text="code" /></pre>
</template>

<script setup lang="ts">
import { onMounted } from "vue"
import Prism from "prismjs"
import "prismjs/themes/prism-tomorrow.min.css"
import "prismjs/components/prism-json"

const props = withDefaults(defineProps<{
    type?: string
    code: string
}>(), {
    type: "json"
})

watch(() => props.code, () => {
    nextTick(() => {
        Prism.highlightAll()
    })
})
onMounted(() => {
    nextTick(() => {
        Prism.highlightAll()
    })
})
</script>
<style lang="scss">
pre {
	span {
	    font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;
	}
	code {
	    font-size: 16px !important;
	}
}
</style>

完结,撒花✿✿ヽ(°▽°)ノ✿

相关推荐
无羡仙43 分钟前
从零构建 Vue 弹窗组件
前端·vue.js
源心锁2 小时前
👋 手搓 gzip 实现的文件分块压缩上传
前端·javascript
源心锁2 小时前
丧心病狂!在浏览器全天候记录用户行为排障
前端·架构
GIS之路2 小时前
GDAL 实现投影转换
前端
烛阴3 小时前
从“无”到“有”:手动实现一个 3D 渲染循环全过程
前端·webgl·three.js
BD_Marathon3 小时前
SpringBoot——辅助功能之切换web服务器
服务器·前端·spring boot
Kagol3 小时前
JavaScript 中的 sort 排序问题
前端·javascript
eason_fan3 小时前
Service Worker 缓存请求:前端性能优化的进阶利器
前端·性能优化
光影少年3 小时前
rn如何和原生进行通信,是单线程还是多线程,通信方式都有哪些
前端·react native·react.js·taro
好大哥呀4 小时前
Java Web的学习路径
java·前端·学习