创新设计记录-5:博客功能-前端

创新设计记录-5:博客功能-前端

工具介绍:vditor

Vditor——一款开源的markdown在线编辑工具

介绍:

在这里插入图片描述

vditor可以在线编辑渲染markdown文件,可以支持分屏编辑,也可以像Typora那样所见即所得,并且支持他自己的快捷键模式。

使用方法:

<script>
new Vue({
  el: '#app',
  data: {
    contentEditor: '',
  },
  mounted () {
    this.contentEditor = new Vditor('vditor', {
      height: 360,
      toolbarConfig: {
        pin: true,
      },
      cache: {
        enable: false,
      },
      after: () => {
        this.contentEditor.setValue('hello, Vditor + Vue!')
      },
    })
  },
})
</script>

创建一个变量contentEditor,在页面监听Dom挂载的时候,创建一个Vditor实例,

new Vidtor('vditor', option?)第一个参数为DOM标签的id,后面的是这个编辑器的配置。

代码

 <div id="vditor" class="vditor"></div>
<script>
 mounted() {
     this.vidtor = new Vditor('vditor', {
         "height": 500,
         "width": 1200,
         "mode": "wysiwyg",
         "cache": {
             "enable": false
         },
         "preview": {
             "markdown": {
                 "autoSpace": true
             }
         },
         "outline": {
             "enable": true
         },
         "counter": {
             "enable": true
         },
         "mode": "ir",
         "preview": {
             "mode": "both"
         },
         "value": this.content
     })

 },
</script>

在初始的时候显示一个,将一个div标签渲染成为一个vditor编辑器,编辑器的高度宽度,显示模式等等配置都如上图所示。

在这里插入图片描述

博客的提交:

 async submit() {
     if (!this.title) {
         ElMessage({
             message: '请填写标题',
             type: 'error'
         })

     } else {
         let data = {
             blog_id: this.id,
             content: this.vidtor.getValue(),
             title: this.title,
             user_id: localStorage.getItem('user_id'),
             save_to_kb: this.save_to_kb
         }
         // this.upload_loading = true
         let loading_ins = ElLoading.service({
             target: document.getElementById('vditor'),
             text: '文件上传中……',
         })
         // console.log('blog_editor:submit:', data);
         // 编辑和添加公用
         await add_blog(data)
             .then(res => {
             // console.log('blog_editor:addblog:', res);
             if (res.data.code == 200) {
                 let msg = this.id == '' ? '添加成功' : '修改成功'
                 ElMessage({
                     message: msg,
                     type: 'success'
                 })
             }
             loading_ins.close()
             // this.upload_loading = false
             this.$router.back()
         })
     }

 },

利用vditor的GetValue()方法,将编辑器中的的原始内容获取出来,发送给后端,对其进行保存。

编辑&删除博客

在这里插入图片描述

标签栏中,在每个博客的后面,有编辑和删除两个操作。

编辑操作就是,获取该博客的信息,路由到编辑器界面,对其进行修改&保存。

删除操作就是,在点击删除按钮之后出现一个确认删除的弹窗,确认之后就会删除

<script>
//删除
delete_blog() {
    if (this.blog_id != '') {
        ElMessageBox.confirm(
            '确定删除该博客吗',
            'Warning',
            {
                confirmButtonText: '确定',
                cancelButtonText: '取消',
                type: 'warning',
            }
        ).then(() => {
            delete_blog(this.blog_id).then(() => {
                ElMessage({
                    type: 'success',
                    message: '删除成功',
                })
                this.init_bloglist()
                this.blog_id = ''
            })
        })
    }
},
//编辑 
 edit_blog() {
     if (this.blog_id != '') {
         let blog = this.bloglist[this.bloglist.findIndex(item => item.id === this.blog_id)]
         this.$router.push({
             path: '/blog_editor',
             query: {
                 blog_id: this.blog_id,
                 content: blog.content,
                 title: blog.title
             }
         })
     }
 }       

博客评论和论坛部分的内容相关,留到论坛部分讲解。

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值