我try 在nuxt3中创建一个plugin,并在我的组件上使用它.但我做不到

我是这样做的:

// @/plugins/highlight.js

import 'highlight.js/styles/stackoverflow-light.css'
import hljs from 'highlight.js/lib/core';
import json from 'highlight.js/lib/languages/json';

hljs.registerLanguage('json', json);

import 'highlight.js/styles/vs.css'

export default defineNuxtPlugin((nuxtApp) => {
  nuxtApp.vueApp.use(hljs)
})

我想这样使用:

// @/components/JSONView.vue
<template>
  <highlightjs
    language="json"
    :code="myCode"
   />
</template>

<script setup>

const code = ref('{ "done": true }')

</script>

提前谢谢你

推荐答案

你可以使用来自Highlight Js的官方Vue plugin

npm i @highlightjs/vue-plugin

~/plugins/highlight.client.ts

import hljs from 'highlight.js/lib/core'
import javascript from 'highlight.js/lib/languages/javascript'
import highlightJS from '@highlightjs/vue-plugin'
import 'highlight.js/styles/atom-one-dark.css'

export default defineNuxtPlugin((nuxtApp) => {
    hljs.registerLanguage('javascript', javascript)
    nuxtApp.vueApp.use(highlightJS)
})

组件用法

<script setup lang="ts">
const JSONEXample = JSON.stringify({ firstName: 'John', lastName: 'Wick', age: 37 }, null, 3)
</script>
<template>
  <main>
    <ClientOnly>
      <highlightjs
          autodetect
          :code="JSONEXample"
      />
    </ClientOnly>
  </main>
</template>

Tested and it works. enter image description here

Javascript相关问答推荐

在卡信息之间切换

积分计算和 colored颜色 判断错误

react 路由加载程序行为

我无法在NightWatch.js测试中获取完整的Chrome浏览器控制台日志(log)

如何在不创建新键的情况下动态更改 map 中的项目?

康威的生活游戏规则在我的Javascript版本中不起作用.''我做错了什么?

使用Java脚本导入gltf场景并创建边界框

如何在文本字段中输入变量?

IF语句的计算结果与实际情况相反

如何在使用rhandsontable生成表时扩展数字输入验证?

禁用.js文件扩展名并从目录导入隐式根index.js时,找不到NodeJS导入模块

使用Nuxt Apollo在Piniastore 中获取产品细节

JavaScript是否有多个`unfined`?

使用Document.Evaluate() Select 一个包含撇号的HTML元素

如何找到带有特定文本和测试ID的div?

如何使用Reaction路由导航测试挂钩?

我的NavLink活动类在REACT-ROUTER-V6中出现问题

Played link-Initialize.js永远显示加载符号

在对象的嵌套数组中添加两个属性

如何为两条动态路由创建一个页面?