当前位置:首页 > VUE

vue实现语法高亮提示

2026-01-22 23:33:10VUE

使用 Prism.js 实现语法高亮

安装 Prism.js 库
通过 npm 或 yarn 安装 Prism.js 核心库及需要的语言插件:

npm install prismjs

引入 Prism.js 和样式
在 Vue 组件中引入 Prism.js 核心和所需语言支持:

import Prism from 'prismjs';
import 'prismjs/themes/prism.css'; // 默认主题
import 'prismjs/components/prism-javascript'; // 加载 JavaScript 语法支持

高亮代码逻辑
mounted 或需要高亮的时机调用 Prism.highlightAll()

mounted() {
  this.$nextTick(() => {
    Prism.highlightAll();
  });
}

模板中使用 <pre><code> 标签
确保代码包裹在标准的 Prism.js 结构内:

<pre><code class="language-javascript">
  const example = 'Hello, Prism.js!';
</code></pre>

使用 highlight.js 实现语法高亮

安装 highlight.js
通过 npm 安装核心库及样式:

npm install highlight.js

配置 Vue 全局指令
注册一个自定义指令自动高亮代码:

vue实现语法高亮提示

import hljs from 'highlight.js';
import 'highlight.js/styles/github.css'; // 选择喜欢的样式主题

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

模板中使用指令
通过 v-highlight 指令触发高亮:

<pre v-highlight><code class="javascript">
  function test() { return true; }
</code></pre>

动态代码高亮更新

监听内容变化
使用 Vue 的 watch 或结合 updated 钩子重新高亮:

watch: {
  codeContent(newVal) {
    this.$nextTick(() => {
      Prism.highlightAll(); // 或 hljs.initHighlighting.called = false; hljs.highlightAll();
    });
  }
}

使用 Monaco Editor 实现 IDE 级高亮

集成 Monaco Editor
适用于需要复杂编辑功能的场景:

npm install monaco-editor

初始化编辑器
在组件中创建编辑器实例:

vue实现语法高亮提示

import * as monaco from 'monaco-editor';

export default {
  mounted() {
    this.editor = monaco.editor.create(this.$refs.editorContainer, {
      value: '// your code here',
      language: 'javascript',
      theme: 'vs-dark'
    });
  }
}

模板容器
添加一个承载编辑器的 DOM 元素:

<div ref="editorContainer" style="height: 400px; width: 100%;"></div>

自定义主题和语言扩展

扩展 Prism.js 语言
手动加载未包含的语言定义:

import 'prismjs/components/prism-typescript';

自定义 highlight.js 样式
替换引入的 CSS 文件即可更换主题:

import 'highlight.js/styles/atom-one-dark.css';

Monaco 主题定制
通过 monaco.editor.defineTheme 定义自定义主题:

monaco.editor.defineTheme('myTheme', {
  base: 'vs',
  inherit: true,
  rules: [{ token: 'comment', foreground: 'FF0000' }]
});

标签: 语法提示
分享给朋友:

相关文章

vue语音提示实现

vue语音提示实现

实现语音提示的方法 使用Web Speech API Vue中可以集成浏览器原生的Web Speech API实现语音合成(TTS)。通过SpeechSynthesisUtterance对象设置文本、…

vue消息提示怎么实现

vue消息提示怎么实现

Vue 消息提示的实现方法 使用 Element UI 的 Message 组件 Element UI 提供了 ElMessage 组件,用于显示全局消息提示。安装 Element UI 后可以直接使…

js实现提示框

js实现提示框

实现基础提示框(Alert) 使用 alert() 方法可以快速创建一个简单的提示框: alert("这是一个基础提示框"); 自定义确认框(Confirm) 通过 confirm() 实现带确认和…

js实现输入框提示

js实现输入框提示

实现输入框提示的几种方法 使用HTML5的placeholder属性 HTML5原生支持placeholder属性,可以在输入框中显示提示文本,当用户开始输入时提示会自动消失。 <input…

jquery提示框

jquery提示框

jQuery提示框的实现方法 jQuery提供了多种方式实现提示框功能,可以通过插件或原生方法实现。以下是常见的几种实现方式: 使用jQuery UI Dialog组件 jQuery UI提供了一…

jquery 提示框

jquery 提示框

jQuery 提示框的实现方法 jQuery 可以通过多种方式实现提示框功能,包括使用原生方法、插件或自定义样式。以下是几种常见的方法: 使用 alert() 和 confirm() 虽然 aler…