hinesboy / mavonEditor

mavonEditor - A markdown editor based on Vue that supports a variety of personalized features
http://www.mavoneditor.com/
MIT License
6.38k stars 916 forks source link

[Question] 图片或文件上传时,存的服务器地址ip是写死的。 #799

Open mr-chk opened 2 years ago

mr-chk commented 2 years ago

$vm.$img2Url(pos, url); 是否有更为灵活的方式,在图片上传时存相应方法,前端渲染时读取配置的ip。

mr-chk commented 2 years ago

一但更改文件服务器地址,html中以前上传的图片或文件地址就是错误的了。

zhengxuan0601 commented 2 years ago

`const INFOLIST = await Promise.all(list.map(d => { return d.articleId

      ? ArticleModel.findOne(d.articleId, sessionId, true)

      : d.circleId

        ? ShareCircleModel.findOne({ 'share_circle.id': d.circleId }, sessionId)

        : UserModel.findOne({ id: d.focusUserId }, true)
  }))`
zhengxuan0601 commented 2 years ago

const INFOLIST = await Promise.all(list.map(d => { return d.articleId

      ? ArticleModel.findOne(d.articleId, sessionId, true)

      : d.circleId

        ? ShareCircleModel.findOne({ 'share_circle.id': d.circleId }, sessionId)

        : UserModel.findOne({ id: d.focusUserId }, true)
  }))
mr-chk commented 2 years ago

借助Vue的template extends把 html 文本作为一个新建的 template 实现 img src 可读取配置的 data 内容。因此我只需要MavonEditor 在上传图片时更加方便地修改嵌入的 img 标签即可,而不是调用 $img2Url api仅修改 src 的固定内容。示例如下。

<template>
  <div>
    <div id="mount-point"></div>
  </div>
</template>

<script>
import Vue from 'vue'

export default {
  mounted() {
    this.createTemplate()
  },
  data() {
    return {

    }
  },
  methods: {
    createTemplate() {
      const template = Vue.extend({
        template: '<div><img :src="src + 123 " alt="1234"></div>',
        name: 'CompA',
        data: function() {
          return {
            src: '10.1.1.1/'
          }
        }
      })

      new template().$mount('#mount-point')
    }
  }
}
</script>

<style scoped>
</style>
mr-chk commented 2 years ago

把源码大概看了一番,发现 markdown 语法生成的 html 依靠的是 Markdown-It 工具。看来要想修改 render 出的 html 只能去修改 Markdown-It 的转换规则了。