在vue3中使用codemirror

这篇具有很好参考价值的文章主要介绍了在vue3中使用codemirror。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

最近为了完成学校的大作业,需要制作markdown编辑器,为了用户输入方便,使用了codemirror来做编辑器。本文介绍的只是很简单的使用配置,更多内容请查阅官方文档。

引入

npm i codemirror

在vue3中使用

基本配置

具体的配置可以看官方网站
https://codemirror.net/5/doc/manual.html#config

// html部分
<textarea ref="l"></textarea>

// 引入
import CodeMirror from "codemirror";

// codemirror配置
const l = ref(null);
onMounted(() => {
     const editor=CodeMirror.fromTextArea(l.value, {
       mode: "markdown",// 模式
       theme: "solarized", // 主题
       lineWrapping: true,// 自动换行
       scrollPastEnd: true,// 允许用户将一个编辑器高度的空白区域滚动到编辑器底部的视图
       lineNumbers: true,// 显示左边行号(默认false,即不显示)
       styleActiveLine: true, // 当前行背景高亮
     });
}

更改编辑框的外部样式(高度、宽度)

第一种改css

.CodeMirror {
  border: 1px solid #eee;
  height: auto;
}

第二种使用editor.setSize()方法,第一个宽,第二个高

获取和修改内容

// 获取
editor.getValue();
// 修改
editor.setValue('要赋予的值');

添加删除事件

具体可以看官网
https://codemirror.net/5/doc/manual.html#events
以change(当编辑器内容改变时触发,类似于input的change)举例:

editor.on('change', (cm, msg) => {
        console.log(cm == editor);// true
        console.log(msg);// 改变内容的信息
})

第二个参数截图codemirror vue3,javascript,前端,html,vue.js

实现markdown过程中遇到的bug

  1. 没有内容也可以滚动,原来的.CodeMirror-sizer的height值为120%(找了有点久/(ㄒoㄒ)/~~
.CodeMirror-sizer {
        height: 100%;
      }
  1. 实现同步滚动过程中遇到鼠标不滚动了,但页面还是滚动的问题,因为两边都绑定了滚动事件,形成了死循环。解决方法:设置一个变量来记录当前哪边触发滚动。
    codemirror vue3,javascript,前端,html,vue.js
  2. codemirror报错 Uncaught TypeError: Cannot read properties of undefined (reading ‘map‘)

原因:由于我用了pinia去存储codemirror的对象,获取使用时codemirror对象变成了proxy对象,没有用真正的codemirror对象。
解决方案:在获取使用用toRaw()来获取真正的codemirror对象再使用。

import { toRaw } from "@vue/reactivity";
const editor = toRaw(editorStore().editor);

这样再去使用就不会报错了。
目前为什么这样会出错,我还不知道原因,如果有知道的,请务必告诉我,谢谢!!!文章来源地址https://www.toymoban.com/news/detail-605929.html

到了这里,关于在vue3中使用codemirror的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【前端技术】Vue3 01:初识 Vue.js

    Vue 可以说是非常流行了,至少在国内是这样,他是个轻量级的 JavaScript 框架,非常适合构建大型和中小型的 Web 应用程序,如果想和前端打交道,应该绕不过这个框架吧。 目录 1 Vue.js 介绍 2  IDE 选择 2.1 vscode 2.2 WebStorm 2.3 Eclipse 3  创建 Vue 应用 3.1 本地脚手架创建 ① 安装

    2024年02月02日
    浏览(64)
  • Vue3——html-doc-ja(html导出为word的js库)

    官方地址  html-doc-js - npm 在 exportWord 方法执行时,将页面中mjx-assistive-mml 节点清除即可,如下图所示

    2024年04月14日
    浏览(41)
  • 基于【ESLint+JavaScript Standard Style】标准的VUE/JS/html风格指南

    本规范是适用于小仙男团队及前端团队所搭建的各种前端框架代码的通用风格规范指南; 使用时,请遵循指南细则进行代码风格约束,并在提交之前确保进行代码风格的修正操作; 本规范参考WEB行业知名的JavaScript Standard Style 规范指南。并将在后续使用过程中,逐步进行符合

    2023年04月13日
    浏览(44)
  • 前端(四)——vue.js、vue、vue2、vue3

    😊博主:小猫娃来啦 😊文章核心: vue.js、vue、vue2、vue3从全局到局部 Vue.js是一款流行的JavaScript框架 vue,vue2,vue3都是vue.js的不同版本。 Vue:Vue.js的第一个版本,也称为Vue 1.x。它于2014年首次发布,并获得了广泛的应用和认可。 Vue2:Vue.js的第二个版本,也称为Vue 2.x。它在Vu

    2024年02月12日
    浏览(79)
  • 【前端vue升级】vue2+js+elementUI升级为vue3+ts+elementUI plus

    gogo code 是一个基于 AST (源代码的抽象语法结构树状表现形式)的 JavaScript/Typescript/HTML 代码转换工具,可以用它来构建一个代码转换程序来帮助自动化完成如框架升级、代码重构、多平台转换等工作。 当前 GoGoCode 支持解析和操作如下类型的代码: ○JavaScript(JSX) ○Typescript

    2024年02月12日
    浏览(54)
  • vue3创建项目报错Vue.js - The Progressive JavaScript Framework TypeError: (0 , import_node_ut

    报错信息: Vue.js - The Progressive JavaScript Framework TypeError: (0 , import_node_util.parseArgs) is not a function     at init (C:UsersAdministratorAppDataLocalnpm-cache_npx2f7e7bff16d1c534node_modulescreate-vueoutfile.cjs:4481:72)     at Object.anonymous (C:UsersAdministratorAppDataLocalnpm-cache_npx2f7e7bff16d1c534node_module

    2024年04月10日
    浏览(163)
  • 【前端灵魂脚本语言JavaScript⑤】——JS中数组的使用

    🐚 作者: 阿伟 💂 个人主页: Flyme awei 🐋 希望大家多多支持😘一起进步呀! 💬 文章对你有帮助👉关注✨点赞👍收藏📂 第一种: var 数组名 = new Array(); 创建一个空数组 第二种: var arr2 = new Array(10); 创建一个定长为10的数组 第三种 var arr3 = new Array(a,b,c); 创建时直接指定元素值

    2023年04月08日
    浏览(65)
  • vue-codemirror实现一个前端代码在线编辑器,可处理 HTML,VUE,JS,CSS代码在线编辑

    先找个目录创建一个vue项目 例如 我们想要项目叫 editor 在终端执行 2和3其实都可以 但个人建议 最近还是2会更稳定一些 在终端执行 引入依赖包 然后在项目src目录下创建 utils 文件夹 里面创建一个setting.js 参考代码如下 然后 这边 调用组件的代码 因为项目也刚创 我直接写 s

    2024年02月15日
    浏览(55)
  • 【前端】html2canvas生成图片空白排查data:;(js vue react uniapp)

    因为要做一个分享图,就用到了html2canvas,一开始是好好的,今天随便测了下,发现图片显示不出来了。打印了下,生成的图片链接变成了 data:; 。后面一步一步地排查,发现是页面内容太多了,删减一点内容就能显示出来。然后我又去认真看了下html2canvas的各个参数,发现可

    2024年02月03日
    浏览(59)
  • 免费下载xlsx.full.min.js包,并放入前端代码里,在html+vue中引用

    访问 xlsx.js 的 GitHub 页面:https://github.com/SheetJS/sheetjs 在 GitHub 页面中,找到 \\\"Code\\\" 按钮,然后点击它,在下拉菜单中选择 \\\"Download ZIP\\\",以下载 xlsx.js 的最新版本。 解压下载的 ZIP 文件。 在解压后的文件夹中,你会找到 xlsx.full.min.js 文件。将这个文件复制到你的前端项目中,通

    2024年02月02日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包