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>

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

相关推荐
Surprisec13 分钟前
动手实践YJS:构建你的第一个实时协作文档编辑器
前端·javascript·面试
晴殇i14 分钟前
JavaScript新一代异步写法:不用await,性能提升80%
前端·面试
患得患失94915 分钟前
【前端】【React】useCallback的作用与使用场景总结
前端·javascript·react.js
wordbaby17 分钟前
TanStack Query :现代 Web 应用的异步状态管理利器
前端
江沉晚呤时19 分钟前
深入解析策略模式在C#中的应用与实现
java·服务器·开发语言·前端·.netcore
Hamm22 分钟前
如何在TypeScript里使用类封装枚举来实现Java的枚举形参倒置
java·前端·typescript
树上有只程序猿44 分钟前
如果单表数据量大,只能考虑分库分表吗?
前端
程序员易晶44 分钟前
vue2添加背景水印-手动实现(无组件模式)
javascript·vue.js·elementui
蘑菇头爱平底锅1 小时前
数字孪生-DTS-孪创城市-前端用代码实现行政区划分
前端·数据可视化
安迪小宝1 小时前
python基础语法13-装饰器
开发语言·前端·python