Mavon-Editor - vue2 前端显示

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

在做毕设的时候想到能不能在前端页面支持 markdown 语法,现在来复现一下出现的问题,以及解决方案。

首先是 markdown 编辑器的引入

这里推荐 MavonEdit 因为我感觉这个做的相对比较完善一些。

向后端添加数据

这里就比较简单了,直接向后端发送请求。后端再存储到数据库当中,无需做数据处理,存到数据库就是以文本的格式。贴一下部分代码:

<div>
   <label for="feedback-user"
   class="mt-2">数据范围与提示:
   </label>
   <mavon-editor v-model="problem.Illustrate"/>
</div>
<div>
<b-button block variant="primary" class="mt-3" @click="add()">添加题目</b-button>
</div>
<script>
methods:{
    ...mapActions('problemModule', { addProblem:'add' }),
    add(){
      this.problem.UserId = this.userInfo.id;
      console.log(this.problem)
      this.addProblem(this.problem).then(() => {
        // 请求成功
        console.log("problem add");
      }).catch((error) => {
        this.$bvToast.toast(error.response.data.msg, {
          title: '数据验证错误',
          variant: 'danger',
          solid: true,
        });
      });      
    },
  },
</script>

注意:如果有多个编辑框的话,要设置一下自动聚焦到文本框,属性 autofocus Boolean true

前端拿到数据渲染

刚开始用的时候就去看了 MavonEdit 的 issues 果然里面有问到前端如何进行数据渲染的 详见 前端解析 markdown 样式问题 我试了一下,但是好像不行,然后就换了方法,看到了 marked 也能解析 markdown 语法抱着试一试的心态,前几条效果还不错,图片如下:
Mavon-Editor - vue2 前端显示,前端,前端,html
但是到换行就出了问题,后端发送的文本:“1 1\r\n5 3\r\n10 20” 这里发现没有换行,我有测了一下其他的语法语法如下图:
Mavon-Editor - vue2 前端显示,前端,前端,html
结果角标 6 和 9 旁边的两个 ^ ^ 都在,又看了网上大佬的教程还是一头雾水。贴一下 marked 代码:

<h3 class = "Header">题目描述:</h3>
<div v-if="problem" v-html="desc"></div>  
<script>
// 局部使用一定要加上 { } 不然会报错
	import { marked } from 'marked';
    desc() {  
      // 使用 marked 将 Markdown 转换为 HTML 
      if(this.problem.data.description)  return marked(this.problem.data.description);  
      return '';
    },
</script>

在看了大量的文章之后决定用 MavonEdit ,因为我感觉即使别的编辑器不能解析,那它本身自带的 preview 应该不会出问题所以又换回了 MavonEdit,基础设置详见仓库地址,设置部分样式结果如下:
代码:

<mavon-editor 
          v-model="problem.data.illustrate"
          class="content-show"   
          :subfield="false" 
          defaultOpen="preview"
          :editable="false" 
          :toolbarsFlag="false"
          :boxShadow="false" previewBackground="#ffffff "/>
<style>
.content-show {
  min-height: 60px;
  /* height: 100% !important; */
  border: none !important;
}
</style>

效果:
Mavon-Editor - vue2 前端显示,前端,前端,html
看着没有对齐有点怪怪的。查看样式发现有 padding
Mavon-Editor - vue2 前端显示,前端,前端,html
p 标签里面还有 margin-bottom,又看了很多文章 参考文章 参考文章 看完很多文章之后我了解到,里面的 css 样式是可以覆盖的。再去 issues 里找到了答案。
最后的解决方案可以用 /deep/ 覆盖
代码:

<mavon-editor 
          v-model="problem.data.illustrate"
          class="content-show"   
          :subfield="false" 
          defaultOpen="preview"
          :editable="false" 
          :toolbarsFlag="false"
          :boxShadow="false" previewBackground="#ffffff "/>
<style>
.content-show {
  min-height: 60px;
  /* height: 100% !important; */
  border: none !important;
}
/deep/ .v-note-wrapper .v-note-panel .v-note-show .v-show-content,
/deep/ .v-note-wrapper .v-note-panel .v-note-show .v-show-content-html {
  width: 100%;
  height: 100%;
  padding: 0;
  overflow-y: auto;
  box-sizing: border-box;
  overflow-x: hidden;
}

/deep/ .markdown-body p{
    margin-top: 0;
    margin-bottom: 0;
}
</style>

效果:
Mavon-Editor - vue2 前端显示,前端,前端,html
本人刚入门前端不到一个月,如有错误欢迎大佬批评改正!文章来源地址https://www.toymoban.com/news/detail-853382.html

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

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

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

相关文章

  • Vue2显示动态添加表单

    提交方法:  

    2024年02月09日
    浏览(10)
  • 【前端vue面试】vue2

    【前端vue面试】vue2

    computed 有缓存,基于响应式依赖数据(基于data中声明过或者父组件传递的props中的数据)发生改变,才会重新进行计算 数据变,直接会触发相应的操作 watch监听引用类型,需要添加deep:true深度监听,拿不到oldVal(旧值),因为新值和老值指针相同。 v-show 和v-if 都是做条件隐

    2024年02月08日
    浏览(12)
  • vue前端实现将页面显示内容生成pdf文件的几种方法,html2canvas、dom-to-image、jspdf(带分页)基本使用以及介绍

    实际开发需求:vue项目中,根据数据结构生成echarts图表组件,生成带有样式的图表以后,点击下载按钮,把图表以pdf格式的文件下载到本地 实现思路:将vue界面的echarts组件生成图片,然后使用插件将生成的图片放入pdf中,再实现pdf文件的下载 涉及框架以及插件:vue、echar

    2024年01月25日
    浏览(15)
  • 【前端框架】Vue2合集

    【前端框架】Vue2合集

    1、Vue概念 vue 是一个用于构建用户界面的渐进式框架,由数据驱动 vue 的两种使用方式 vue 核心包开发:局部模块改造 vue 核心包与 vue 插件 工程化开发:整站 开发 2、 创建实例 1、准备容器 2、导包 3、创建Vue实例 4、指定配置项 = 渲染数据 3、插值表达式 插值表达式语法:

    2024年01月19日
    浏览(11)
  • 前端学习--vue2--2--vue指令基础

    前端学习--vue2--2--vue指令基础

    写在前面: 前置内容 - vue配置 vue指令只的是带有v-前缀的特殊标签属性 插值表达式{{}}是一种vue模板语法。 利用表达式进行差值,渲染到页面。 表达式可以是被求值的代码,js会计算 不能用差值表达式的 不存在的数据 {{data里面不存在的字段 js {{if}} 标签属性 span id=“

    2024年02月14日
    浏览(10)
  • vue2 -- 截图工具html2canvas

    可以将网页中的指定元素或整个页面截取为图片,以便保存或分享。 在 Vue 中使用 html2canvas 实现 1:安装 html2canvas 库。你可以使用 npm 安装,命令如下: 2:在需要使用 html2canvas 的 Vue 组件中,引入 html2canvas 库: :3:编写截图逻辑。你可以在组件的方法中编写,例如:

    2024年01月19日
    浏览(14)
  • 前端vue2 全局水印效果

    前端vue2 全局水印效果

    最近写项目遇到一个需求,全局显示水印,不管在哪个路由都要显示。 想要实现的效果: 新建shuiyin.js文件 main.js中全局注册

    2024年02月15日
    浏览(46)
  • Vue2.0针对设备调节显示内容方法

    一晚上完成0.2.2、0.3.0、0.3.1三个版本的更新,很高兴,总结一下 项目地址: 穆音博客 文章首发地址:Vue针对设备调节显示 总体来说有两种方法,其一是css的媒体查询,另一种是vue-mq库进行对设备断点,从而区分不同的设备,我这里用的是mq库进行。以下是使用方法: 使用

    2024年02月11日
    浏览(8)
  • 前端权限校验(以Vue2为例)

    前端权限校验是一种在前端代码中进行权限验证的方法,用于保护系统资源和数据的安全性。它可以确保只有具有合适权限的用户才能访问受限资源。 路由级别权限控制:通过在前端路由中配置权限信息,可以控制用户能够访问的页面。在访问每个页面之前,校验用户的权限

    2024年02月16日
    浏览(9)
  • 前端常见面试题之vue2

    在Vue2中,组件的生命周期钩子函数包括: beforeCreate :在实例初始化之后,数据观测 (data observer) 和 event/watcher 事件配置之前被调用 created :实例已经创建完成之后被调用 beforeMount :在挂载开始之前被调用:相关的 render 函数首次被调用 mounted:el 被新创建的 vm.$el 替换,并挂

    2024年02月22日
    浏览(10)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包