当前位置:首页 > VUE

vue实现代码块

2026-01-23 15:48:50VUE

Vue 实现代码块的常用方法

使用第三方库如 highlight.js
安装 highlight.js 并配置 Vue 插件,通过自定义指令或组件实现代码高亮。

npm install highlight.js

在 Vue 中注册全局指令:

import hljs from 'highlight.js';
import 'highlight.js/styles/github.css'; // 引入样式

Vue.directive('highlight', {
  inserted(el) {
    hljs.highlightBlock(el);
  }
});

模板中使用:

<pre v-highlight><code class="javascript">const foo = 'bar';</code></pre>

封装可复用的代码块组件
创建 CodeBlock.vue 组件,动态加载语言高亮规则。

<template>
  <pre><code :class="language" ref="code">{{ content }}</code></pre>
</template>

<script>
import hljs from 'highlight.js';

export default {
  props: ['content', 'language'],
  mounted() {
    hljs.highlightBlock(this.$refs.code);
  }
};
</script>

调用示例:

<code-block content="console.log('Hello')" language="javascript" />

结合 Markdown 渲染
若需要渲染 Markdown 中的代码块,使用 markedhighlight.js 组合。

npm install marked highlight.js

配置 Markdown 解析器:

import marked from 'marked';
import hljs from 'highlight.js';

marked.setOptions({
  highlight: (code, lang) => hljs.highlight(lang, code).value
});

在 Vue 中转换 Markdown:

<div v-html="compiledMarkdown"></div>

<script>
export default {
  computed: {
    compiledMarkdown() {
      return marked('```js\nconst x = 1;\n```');
    }
  }
};
</script>

动态语言切换
通过 watch 监听语言变化,重新高亮代码块。

watch: {
  language() {
    this.$nextTick(() => {
      hljs.highlightBlock(this.$refs.code);
    });
  }
}

注意事项

  • 样式需单独引入,如 github.cssatom-one-dark.css
  • 避免直接使用 v-html 渲染未过滤的内容,防止 XSS 攻击。
  • 服务端渲染 (SSR) 需检查 highlight.js 的兼容性。

vue实现代码块

标签: 代码vue
分享给朋友:

相关文章

vue实现一个系统

vue实现一个系统

Vue 系统实现步骤 项目初始化与配置 使用 Vue CLI 或 Vite 创建项目: npm init vue@latest my-system 选择需要的配置(Router、Pinia 等)。…

vue实现主题

vue实现主题

Vue 实现主题的方法 使用 CSS 变量动态切换主题 定义全局 CSS 变量,通过修改这些变量实现主题切换。在 Vue 的根组件或全局样式中定义变量: :root { --primary-c…

jq 实现 vue

jq 实现 vue

jq 实现 Vue 的核心功能 jq 是一个轻量级的 JavaScript 库,主要用于 DOM 操作和事件处理。虽然它不能完全替代 Vue,但可以通过一些技巧模拟 Vue 的核心功能,如数据绑定、事…

vue 实现弹幕

vue 实现弹幕

vue 实现弹幕的方法 使用 CSS 动画和动态渲染 在 Vue 中实现弹幕效果,可以通过动态渲染弹幕元素并结合 CSS 动画实现。以下是具体步骤: 数据准备 创建一个数组存储弹幕数据,每条弹幕包…

vue 实现过滤

vue 实现过滤

Vue 实现过滤的方法 在 Vue 中实现过滤功能可以通过多种方式完成,包括使用计算属性、自定义过滤器、第三方库等。以下是几种常见的实现方法: 使用计算属性进行过滤 计算属性是 Vue 中最常用的过…

vue实现定时

vue实现定时

Vue 实现定时功能的方法 使用 setInterval 和 clearInterval 在 Vue 中可以通过 setInterval 和 clearInterval 实现定时功能。在组件的 mou…