nuxt3如何添加highlightjs代码高亮功能

ppylox
·2/7/2023·0 阅读
AI 摘要模型根据正文自动生成,仅供参考

在Nuxt3项目中添加highlight.js代码高亮:先通过npm安装highlight.js,在需要高亮的页面引入插件及monokai-sublime.css样式文件。由于Nuxt3为服务端渲染,内容渲染完成前调用高亮不生效,需在获取数据后加200毫秒延时再调用hljs.highlightAll()。文中给出完整示例:用reactive管理数据,异步请求获取内容后赋值,并通过setTimeout延时执行高亮。

大家好我是图恩,今天给大家分享如何在nuxt3项目中添加代码高亮功能。

nuxt3是基于vue3实现的服务端渲染(ssr)框架,跟单页面不同的是页面的渲染是在服务端完成,包括javascript/css等。

highlightjs( https://highlightjs.org/ )是一款代码高亮插件,支持市面上大部分语言的代码高亮,想知道它支持那些语言可以去它的官网查看。

nuxt3介入hightlightjs操作如下:

通过npm 安装

npm i highlight.js

在有需要给代码添加高亮的页面引入,同时引入css文件


// 引入highlightjs代碼高亮插件\r\nimport 'highlight.js/styles/monokai-sublime.css'\r\nimport hljs from "highlight.js"\r

在获取到内容后添加一个200毫秒的延时来调用highlightjs的高亮方法,否则不会生效,可以理解为在内容还没渲染完成就调用会不生效。


setTimeout(() =>{\r\n      hljs.highlightAll()\r\n  },200)

完整代码如下供参考

<script lang="ts" setup>\r\nimport { getDetailApi} from "@/pages/post/index"\r\nimport { reactive, onMounted } from "vue"\r\nimport { toReactive } from "@vueuse/shared";\r\n\r\n// 引入highlightjs代碼高亮插件\r\nimport 'highlight.js/styles/monokai-sublime.css'\r\nimport hljs from "highlight.js"\r\n\r\nlet state = reactive({\r\n  detailData: {\r\n    title: "",\r\n    content: "",\r\n  },\r\n})\r\n\r\nconst getList = async () => {\r\n  // 通过异步请求数据\r\n  let { data } = toReactive(await useFetch(getDetailApi + route.params.id)) as any;\r\n  // 接口返回数据后再添加一个200毫秒的延时\n  state.detailData.content = data.data.result\r\n  setTimeout(() =>{\r\n      hljs.highlightAll()\r\n  },200)\r\n}\r\ngetList()\r\n</script>


相关文章

评论 (0)

暂无评论,来写第一条吧