Vue3下Codemirror使用

codemirror的使用基于vue-codemirror,随着新版本的发布,底层基于的codemirror版本也更新为CodeMirror@6,用法也发生了相应变化

安装依赖
yarn add codemirror vue-codemirror
页面引入
<template>
	<div class="layout">
		<el-card style="width: 50%;">
			<codemirror v-model="SQLCommand" :extensions="extensions" :autofocus="true" placeholder="请输入SQL" />
		</el-card>
	</div>
</template>
<script>
import { SQL } from '@/constants/sql.js'
import { sql } from '@codemirror/lang-sql'
import { Codemirror } from 'vue-codemirror'
import { oneDark } from '@codemirror/theme-one-dark'
export default {
	name: 'SQLEditor',
	components: {
		Codemirror
	},
	data() {
		return {
			SQLCommand: SQL,
			extensions: [sql(), oneDark]
		};
	},
	methods: {
	}
};
</script>
<style lang="scss">
.cm-editor {
	width: 100%;
	height: 460px;
}

.cm-focused {
	outline: none !important;
}
</style>
主题

目前官方除了默认主题外,仅提供了theme-one-dark这一个主题。这是额外拆分的包,需要单独安装

npm i @codemirror/theme-one-dark
宽高设置

目前已经去除了原有的setSize API,转而使用class来定义样式

No. You’ll have to use CSS to size the editor (and may need to call requestMeasure after to make sure the editor notices its layout changed).

可设置样式的内容,官网也给出了示例

<div class="cm-editor [cm-focused] [generated classes]">
  <div class="cm-scroller">
    <div class="cm-gutters">
      <div class="cm-gutter [...]">
        <!-- One gutter element for each line -->
        <div class="cm-gutterElement">...</div>
      </div>
    </div>
    <div class="cm-content" contenteditable="true">
      <!-- The actual document content -->
      <div class="cm-line">Content goes here</div>
      <div class="cm-line">...</div>
    </div>
    <div class="cm-selectionLayer">
      <!-- Positioned rectangles to draw the selection -->
      <div class="cm-selectionBackground"></div>
    </div>
    <div class="cm-cursorLayer">
      <!-- Positioned elements to draw cursors -->
      <div class="cm-cursor"></div>
    </div>
  </div>
</div>
语言支持

额外安装支持SQL的插件,基本使用方式参考页面引入,更多使用方式参考官网文档

npm i @codemirror/lang-sql
输入提示

基础的类似selectfrom等的提示插件已经给出,但是要结合当前库元数据进行输入提示,需要自己额外自定义SQL parser以识别当前输入的上下文

示例代码

一个可当做demo的示例代码:sqleditor_vue3

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 3中使用CodeMirror需要以下步骤和配置: 1. 首先,你需要通过命令行安装vue-codemirror插件。可以使用以下命令进行安装: ``` npm install vue-codemirror --save ``` 2. 然后,在你的Vue组件中,引入CodeMirror和相关样式的依赖。你可以在组件的`<script>`标签中添加以下代码: ```javascript import VueCodeMirror from 'vue-codemirror' import 'codemirror/lib/codemirror.css' import 'codemirror/theme/your-theme.css' // 替换"your-theme"为你想要的主题名称 import 'codemirror/mode/javascript/javascript' // 如果你想使用JavaScript语法高亮,需要引入对应的语言模式文件 ``` 3. 接下来,将`VueCodeMirror`作为组件的局部组件或全局组件进行注册。你可以在组件的`<script>`标签中添加以下代码: ```javascript export default { components: { VueCodeMirror }, // ... } ``` 4. 最后,在你的Vue模板中使用`vue-codemirror`组件。你可以在模板中添加以下代码: ```html <vue-codemirror :options="yourOptions" v-model="yourModel"></vue-codemirror> ``` 这里的`yourOptions`是CodeMirror的配置选项,你可以根据需求进行相应的配置。`yourModel`是你绑定的数据模型,它将保存CodeMirror编辑器中的内容。 需要注意的是,如果你在运行官方示例时遇到了`@codemirror/lang-javascript`或`@codemirror/theme-one-dark`的报错,可能是由于相关依赖包没有安装或版本不匹配导致的。你可以尝试更新这些依赖包的版本,或者检查是否正确安装了相关依赖。 希望这个解答对你有帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [前端插件库之vue3使用vue-codemirror插件](https://blog.csdn.net/weixin_46372074/article/details/124994320)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值