当前位置:首页 > 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实现搜索框提示

实现搜索框提示功能 在Vue中实现搜索框提示功能通常需要结合输入框监听、数据过滤和展示逻辑。以下是具体实现方法: 监听输入框变化 使用v-model绑定输入框的值,并监听输入变化: <tem…

js中实现输入智能提示

js中实现输入智能提示

实现输入智能提示的方法 在JavaScript中实现输入智能提示(自动完成)功能,可以通过多种方式完成。以下是几种常见的方法: 使用HTML5的datalist元素 HTML5提供了<data…

jquery 语法

jquery 语法

jQuery 语法基础 jQuery 语法设计简洁,主要基于选择器和操作方法的组合。核心思想是通过选择器选取 DOM 元素,然后调用 jQuery 方法对其进行操作或事件绑定。 $(selector…

java如何弹出提示框

java如何弹出提示框

使用 JOptionPane 弹出提示框 JOptionPane 是 Java Swing 库中的一个类,专门用于创建各种类型的对话框,包括提示框、确认框、输入框等。 import javax.sw…

uniapp提示插件

uniapp提示插件

关于UniApp提示插件 UniApp开发中常使用提示插件来增强用户交互体验,以下是一些常用的提示插件及其使用方法: uni.showToast 这是UniApp内置的轻量级提示组件,适用于短时间显…

uniapp提示气泡

uniapp提示气泡

uniapp 实现提示气泡的方法 在 uniapp 中实现提示气泡(Tooltip)效果,可以通过以下几种方式实现: 使用 uni.showToast API uni.showToast 是 uni…