vue3结合codemirror6原生使用写法

前言:网上零星几篇基本狗屁不通,非程序水平不行,属实文笔太烂,词不达意,干啥弄不明白要么杂乱无章。我的需求很简单,最近网站上要做个ol的学习模块,需要一个html的编辑器,一个预览。不需要别人给我封装对我而言多余的东西。为此琢磨了下网页在线编辑器,codemirror 经过时间的沉淀,已经是非常成熟的开源框架了,为此直接采用。非研究文章,纯使用文章。

在这里插入图片描述

codemirror创建基础设置的编辑器

codemirror6 进行了全面的重写, 将整个库依据功能 化成了不同的包。所以安装codemirror后 还不能完整的使用它。你需要额外的去加载对应功能的包。

为创建基础设置的编辑器 你需要安装如下包

npm install --save codemirror @codemirror/state @codemirror/view

接着

import { EditorState} from "@codemirror/state";
import { basicSetup } from "codemirror";
import { EditorView } from "@codemirror/view";
let state = EditorState.create({
    extensions: [
      basicSetup,
    ],
    // 编辑器中的内容
    doc: "",
  });
let view = new EditorView({
  state,
  // 编辑器 挂载的dom
  parent: document.querySelector("#code-container"),
});

插件extensions

观察上方代码,看到extensions 选项, 这个是可供注入的 插件字段,basicSetup中 只提供了一个最基本的设置,但是没有语法的解析、颜色主题的更换、包括我们的编辑器常用的 Tab 缩进,这个字段相当于是一个可供我们拓展的字段,就是要什么就加什么,不行就自己写。 主要分两种 ,一种是语法解析器, 这种

语法解析器加载(html)

主要用于对标签的识别提示,以及高亮字符等。
别忘记 npm install @codemirror/lang-html 对应的包

import { EditorState, Compartment } from "@codemirror/state";
import {  html } from "@codemirror/lang-html";
const languageConf = new Compartment();
let state = EditorState.create({
    extensions: [
      basicSetup,
      languageConf.of(html()),
    ],
    doc: "",
});
颜色主题更换
import { EditorState, Compartment } from "@codemirror/state";
import { dracula } from '@uiw/codemirror-theme-dracula';

const languageConf = new Compartment();
let state = EditorState.create({
    extensions: [
      basicSetup,
      dracula ,
    ],
    doc: "",
});
字符缩进
import { indentWithTab } from "@codemirror/commands";
import { EditorView, keymap } from "@codemirror/view";

let state = EditorState.create({
  extensions: [
    basicSetup,
    keymap.of([indentWithTab]),
  ],
  doc: "",
});

预览

新建一个iframe 获取到Dom

// 运行代码. 把编辑器的内容 渲染到iframe的容器上
const runCode = function () {
  frameDom.srcdoc = view.state.doc.toString();
};
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 ]
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值