项目需要高亮显示markdown文档中的代码。刚开始使用的是highlight库,但使用中发现这个库对一些语言的支持不太好,然后换成prism库,发现这个库语言支持能力和样式都不错,所以就选择这个库。
下面介绍如何在nuxt3中使用这个库。
yarn add prismjs
# 这个库主要是一些ts的类型声明文件,
# 这些类型与纯js写的库中导出的方法和变量相对应
#以便ts中能方便的使用纯js写的代码。
# 简单的说就是在typescript中使用 javascript写的代码。
yarn add --dev @types/prismjs
# 此插件依赖babel-plugin-prismjs
# babel插件主要是根据配置来导入相应的插件和主题库,并且根据浏览器兼容性的需要转成
# 低版本支持的代码。
yarn add --dev vite-plugin-prismjs
在nuxt.config.ts文件中添加如下配置
import prismjs from 'vite-plugin-prismjs'
vite: {
plugins: [
prismjs({
// 添加支持的高亮的语言, 如果需要支持全部的话改成这样: languages: "all"
languages: ['cpp',
'javascript',
'bash',
'dart',
'sql',
'css',
'html',
'java',
'json',
'sass',
'scss',
'c',
'log',
'swift',
'md',
'nginx',
'yaml',
'xml',
'shell',
'ts'
],
// 配置prism插件 toolbar是后面两个插件依赖的插件.
// show-language: 显示语言名。
// copy-to-clipboard: 添加复制代码功能。
plugins: ['toolbar', 'show-language', 'copy-to-clipboard'],
// 主题名称,支持的主题可以在 node_moduels中安装此库的目录下寻找。
theme: "tomorrow",
css: true
})
]
},
prism 库在浏览器加载后,会自动调用highlightAll, 来高度HTML中的代码块,并根据在配置文件中配置的插件,自动执行插件模块的代码。
如果你的markdown文档已经在ssr的服务端转成了html,则你不需要添加任何代码,就可以完成代码高亮。
但如果你的markdown文档内容需要在客户端获取并展示的话,需要添加如下代码,主动触发highlightAll
<script setup>
import Prism from 'prismjs'
onMounted(async () => {
// 先获取数据
// nextTick保证你的获取到的已转成html的markdown内容已经更新到HTML的DOM结构中了。
await nextTick()
// 然后执行高亮即可
Prism.highlightAll()
})
</script>
版权声明:本文为凸然网站的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:Nuxt3中使用prismjs高亮代码