记录一次monaco-editor实现的sql编辑器

项目背景:项目需要前端提供一个sql语句的编辑器,供语句查询可视化。
技术框架:vue + monaco-editor
实现功能:语法提示,自动补全,语言高亮,主题切换,自适应,单行选中,格式化,主题切换
1:语法提示,monaco-editor编辑器有多种内置的编辑器语法,注册了几个默认的内置语言,“javascript”,“css”,“html”,“json”。如果需要注册其他语言,那么办法来了,在monaco-editor插件包中已经帮我们集成了大部分语言配置,路径:monaco-editor/esm/vs/basic-languaages/xxx,以sql为例。
在这里插入图片描述
注册语言,keys的值是sql语言的内置值,主要匹配关键字做提示,那么同理,如果需要自定义的语言提示,在suggestions中增加匹配的逻辑然后return出去。
在这里插入图片描述在这里插入图片描述

2语言高亮
在这里插入图片描述
3主题切换
在这里插入图片描述

4自适应
在这里插入图片描述
5单行选中
在这里插入图片描述
6格式化
在这里插入图片描述

在这里插入图片描述
7主题切换,主题可以自己设定,图中是默认的编辑器主题
在这里插入图片描述

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3 中使用 Monaco Editor 实现 SQL 编辑器是一个常见的任务,因为 Monaco Editor 提供了强大的代码编辑和高亮功能,适合于多种编程语言,包括 SQL。以下是如何在 Vue3 中集成 Monaco Editor 的步骤: 1. **安装依赖**: 首先确保已经安装了 Vue 和 Monaco Editor。可以通过 npm 或者 yarn 安装: ```bash npm install vue@next monaco-editor # 或者 yarn add vue@next monaco-editor ``` 2. **引入并注册组件**: 在你的 Vue 组件中引入 MonacoEditor 组件,并将它注册为自定义组件: ```javascript import { createApp } from 'vue'; import MonacoEditor from 'monaco-editor.vue'; createApp(App).component('MonacoEditor', MonacoEditor); ``` 3. **配置组件**: 使用 `monaco.editor.create` 创建一个 Monaco 编辑器实例,并将 SQL 相关设置传递进去,如语言模式(`'sql'`)、初始代码等: ```html <template> <div> <MonacoEditor :value="sqlCode" :language="languageMode" :options="editorOptions" ></MonacoEditor> </div> </template> <script> export default { data() { return { sqlCode: '', // 初始的 SQL 代码 languageMode: 'sql', // SQL 语言模式 editorOptions: { lineNumbers: true, // 显示行号 wordWrap: 'on', // 自动换行 gutters: ['lineNumbers'], // 显示边距 }, }; }, // ... }; </script> ``` 4. **事件处理**: 如果需要监听编辑器的变化或保存操作,可以添加相应的事件处理器,如 `beforeModelChange` 和 `save`: ```javascript methods: { handleBeforeModelChange(editor, event) { // 在修改前做校验或记录操作 }, handleSave() { const sql = editor.getValue(); // 获取编辑器中的 SQL 代码 // 处理保存逻辑,例如提交到服务器 }, }, ``` 在 `<MonacoEditor>` 标签上绑定这些方法作为事件处理器。 5. **实时编辑和语法高亮**: Monaco Editor 自带了语法高亮,当设置的语言模式为 SQL 时,它会自动识别 SQL 语法并进行高亮。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值