解决使用monaco-editor编译器,编译器展示内容没有超过编译器高度,但是出现滚动条问题

前言:

最近在完成项目时,有使用编译器进行在线编辑的功能,就选用了monaco-editor编译器,但是实现功能之后,发现即使在编译器展示的内容没有超过编译器高度的情况下,编译器依旧存在滚动条,会展示大量的空白,为了解决这个问题,笔者采用了多种方式进行尝试,最后终于解决,在此分享与各位小伙伴。

原本效果展示:

解决方案:添加scrollBeyondLastLine这个配置项

具体代码展示:

<template>
  <div class="container">
    <div class="code" ref="editorRef" />
  </div>
</template>

<script lang="ts" setup>
import { onMounted, ref } from "vue"
import * as Monaco from "monaco-editor"
const editorRef = ref(null)
const props = defineProps({
  code: {
    type: String,
    require: true
  },
  readOnly: {
    type: Boolean,
    require: true
  }
})

onMounted(() => {
    const editor = Monaco.editor.create(editorRef.value,{
      value: props.code,
      language: "json",
      theme: "vs-dark",
      readOnly: props.readOnly,
      scrollBeyondLastLine: false //设置编辑器是否可以滚动到最后一行之后(添加这一行)
        }
      })
    }
})
</script>

修改后的效果:无法进行滚动


 

### 集成 Monaco EditorVue3 项目 为了在 Vue3 项目中集成 Monaco Editor 并将其配置为 SQL 编辑器,可以遵循以下方法: #### 安装依赖库 首先,在 Vue3 项目的根目录下安装 `monaco-editor` 及其对应的 webpack 插件。 ```bash npm install monaco-editor --save npm install @monaco-editor/loader --save ``` 这一步骤确保了能够加载并初始化 Monaco Editor 所需的基础包[^1]。 #### 创建编辑组件 创建一个新的 Vue 组件用于封装 Monaco Editor 实例。此组件负责渲染编辑器以及处理与之交互的各种事件。 ```vue <template> <div ref="editorContainer" class="editor"></div> </template> <script setup> import { onMounted, ref } from 'vue'; import * as monaco from 'monaco-editor'; const editorContainer = ref(null); onMounted(() => { const sqlEditor = monaco.editor.create(editorContainer.value, { value: '-- 输入您的 SQL 查询语句', language: 'sql', // 设置默认编程语言为 SQL theme: 'vs-dark' // 主题设置 (可选) }); }); </script> <style scoped> .editor { width: 80%; height: 60vh; } </style> ``` 上述代码展示了如何通过 JavaScript API 初始化一个简单的 SQL 编辑环境,并指定了初始内容使用的语法高亮风格。 #### 加载自定义语言特性 为了让 Monaco 更好地支持特定版本的 SQL 或者增加额外的语言特性(比如自动补全),可以通过注册新的语言定义来增强内置的支持能力。 ```javascript // 假设已经引入了必要的模块... await import('monaco-editor/esm/vs/basic-languages/sql/sql.contribution'); // 如果有更详细的 SQL 方言需求,则可能还需要进一步定制化 monaco.languages.registerCompletionItemProvider('sql', /* ... */); ``` 这段脚本说明了怎样动态导入官方提供的 SQL 支持文件,并举例介绍了添加自定义完成项提供者的接口调用方式。 #### 使用编辑器组件 最后,在应用的主要布局或其他合适位置引入刚刚创建好的编辑器组件即可开始编写 SQL 脚本。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值