当前位置:首页 > VUE

vue实现codemirror sql

2026-03-29 22:52:34VUE

安装依赖

在 Vue 项目中安装 codemirror 和相关插件:

npm install codemirror @codemirror/lang-sql

创建组件

新建一个 Vue 组件文件(如 SqlEditor.vue),引入必要的模块:

<template>
  <div ref="editor"></div>
</template>

<script>
import { onMounted, ref } from 'vue'
import { EditorView, basicSetup } from 'codemirror'
import { sql } from '@codemirror/lang-sql'

export default {
  setup() {
    const editor = ref(null)

    onMounted(() => {
      new EditorView({
        doc: 'SELECT * FROM table',
        extensions: [basicSetup, sql()],
        parent: editor.value
      })
    })

    return { editor }
  }
}
</script>

配置 SQL 语言支持

通过 @codemirror/lang-sql 提供的 sql() 扩展启用 SQL 语法高亮和自动补全:

import { sql } from '@codemirror/lang-sql'

// 可配置方言(如 MySQL、PostgreSQL)
const sqlDialect = sql({ dialect: 'standard' })

添加主题样式

引入 CodeMirror 的基础样式文件:

import 'codemirror/lib/codemirror.css'

自定义编辑器配置

扩展编辑器功能,例如设置行号、主题等:

extensions: [
  basicSetup,
  sqlDialect,
  EditorView.lineWrapping,
  EditorView.theme({
    '&': { height: '300px' },
    '.cm-scroller': { overflow: 'auto' }
  })
]

处理编辑器内容

获取和设置编辑器内容的方法:

// 获取内容
const content = editor.state.doc.toString()

// 设置内容
editor.dispatch({
  changes: { from: 0, to: editor.state.doc.length, insert: 'NEW SQL QUERY' }
})

完整组件示例

整合所有功能的完整组件代码:

vue实现codemirror sql

<template>
  <div ref="editor"></div>
</template>

<script>
import { onMounted, ref } from 'vue'
import { EditorView, basicSetup } from 'codemirror'
import { sql } from '@codemirror/lang-sql'

export default {
  setup() {
    const editor = ref(null)

    onMounted(() => {
      new EditorView({
        doc: 'SELECT * FROM table',
        extensions: [
          basicSetup,
          sql({ dialect: 'standard' }),
          EditorView.lineWrapping,
          EditorView.theme({
            '&': { height: '300px', border: '1px solid #ddd' },
            '.cm-scroller': { overflow: 'auto' }
          })
        ],
        parent: editor.value
      })
    })

    return { editor }
  }
}
</script>

<style>
@import 'codemirror/lib/codemirror.css';
</style>

标签: vuecodemirror
分享给朋友:

相关文章

vue实现多级组件

vue实现多级组件

实现多级组件的基本结构 在Vue中实现多级组件通常涉及父子组件嵌套,通过props向下传递数据,通过$emit向上传递事件。多级组件的核心是递归或动态组件渲染。 <!-- 父组件 Parent…

vue实现树

vue实现树

Vue 实现树形结构的方法 使用递归组件实现树形结构 递归组件是Vue中实现树形结构的常见方式。通过组件调用自身,可以轻松构建多层嵌套的树形数据。 <template> <ul…

vue 菜单实现

vue 菜单实现

Vue 菜单实现方法 在Vue中实现菜单功能可以通过多种方式完成,以下是几种常见的实现方法: 使用v-for动态生成菜单 通过数据驱动的方式动态渲染菜单项,适合菜单内容可能变化的场景: <t…

vue实现login

vue实现login

Vue 实现登录功能 在 Vue 中实现登录功能通常需要以下几个步骤: 创建登录表单组件 在 Vue 项目中创建一个登录表单组件,包含用户名和密码输入框以及提交按钮。可以使用 Vue 的模板语法和双…

vue实现换页

vue实现换页

Vue实现页面切换的方法 在Vue中实现页面切换通常可以通过Vue Router来完成。Vue Router是Vue.js官方的路由管理器,用于构建单页面应用(SPA)。以下是几种常见的实现方式:…

vue实现侧导航

vue实现侧导航

Vue 实现侧边导航 使用 Vue 实现侧边导航可以通过多种方式完成,以下是一种常见的实现方法,结合 Vue Router 和动态组件。 基础结构 创建侧边导航栏的基本结构,通常使用 <ul&…