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>

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

相关推荐
NeverSettle_几秒前
AI对话数据管理useChat 实现 SSE hook封装
前端
Cuzblind1 分钟前
React Hooks入门
前端·react.js
YGY_Webgis糕手之路2 分钟前
OpenLayers 综合案例-台风风场模拟
前端·gis
火车叼位2 分钟前
前端从代码完成到可交付之间还有什么
前端
SoonITer3 分钟前
esm 和 cjs 共用同一份类型 - 让 type 先 move to esm-only
前端·typescript·前端工程化
鸡米键盘4 分钟前
巧用 resolve.alias 优化构建产物:消除重复打包与提升 Tree Shaking 效果
前端
7ayl5 分钟前
原型链
前端
胡gh9 分钟前
新朋友:Typescript,TypeScript 在 React 业务开发中的最佳实践
react.js·面试·typescript
daydayupx12 分钟前
【前端学部署】第一篇: 几块钱部署一个有域名的静态网站
前端·后端
前端搬砖仔噜啦噜啦嘞13 分钟前
从0到1开发一款vscode插件
前端·javascript