react/vue markdown 編輯器組件

markdown 編輯器插件其實很多,重復(fù)造輪子除了可以自嗨一下也確實沒啥意義,但我其實想要一個可以直接上傳圖片到七牛云的markdown編輯器,感覺對我就有點意義了,所以誕生了這么個東西

特點

只需要通過簡單設(shè)置一個七牛云外鏈域名和一個獲取上傳token的方法就可以直接上傳圖片到七牛云的能力。(我沒有提供編輯器都該有的操作按鍵,所以傷處啊那圖片直接通過拖動圖片到編輯區(qū)域來完成)

體驗地址

效果

image.png
image.png

npm

Use With React

npm install react-qn-md --save

屬性 props

name required type default description
initInfo false string '' 初始的md語法字符串
theme false string light 顏色主題 'light' ,'dark' 可選
imgStyle false string --- 七牛云圖片樣式規(guī)則
domain false string --- 七牛云空間的外鏈域名
customStyle false object --- 自定義編輯框的樣式
edit false bool true 是否顯示編輯框,false時用于展示
token false string '' 七牛云上傳token
getToken false function --- 實現(xiàn)獲取七牛云上傳token
updateInfo false function param -> mdInfo 返回最新markdown內(nèi)容

如果需要上傳圖片功能 則 domain token getToken 是必須的

import React, {useState} from 'react';
import './App.css';
import Editor from 'react-qn-md'

function App() {
  const [token, setToken] = useState('')
  const getToken = () => {
    fetch('http://www.huili.cool:8901/api/uptoken', {
      method: 'GET'
    }).then((res) => {
      if (res.status === 200) {
        res.text().then((token) => {
          setToken(token) 
        })
      }
    })
  }
  const updateInfo = (info) => {
    // do something with new info
    // save or submit ...
    console.log(info)
  }
  return (
    <div className="App">
      <Editor
        initInfo="## Hello World!"
        domain="http://editor.huili.cool/"
        token={token}
        getToken={getToken}
        updateInfo={updateInfo}
        theme="light"
        customStyle={{height: '40vh', overflow: 'auto'}} >
      </Editor>
    </div>
  );
}

export default App;

github地址


Use With Vue

npm install vue-qn-md-editor --save

屬性 options

name required type default description
theme false string light 顏色主題 'light' ,'dark' 可選
domain true string --- 七牛云空間的外鏈域名
customStyle false string --- 自定義編輯框的樣式
edit false bool true 是否顯示編輯框,false時用于展示

v-model

可以在組件上使用 v-model 來綁定編輯的內(nèi)容

事件 event

name param description
getUploadToken --- 必須實現(xiàn)此方法,用戶需要在此方法中實現(xiàn)獲取七牛云的上傳token,且通過 this.$refs[element].setToken(token)來傳遞上傳憑證,且保證上傳憑證的有效時間大于2分鐘

Use

<template>
  <div id="app">
    <!-- <img alt="Vue logo" src="./assets/logo.png"> -->
    <MdEditor
      ref="editor"
      v-model="mdInfo"
      domain="http://xxxx.cn/"
      @getUploadToken="getUploadToken"
      theme="dark"
      customStyle="height: 100vh;text-align: left;"
    />
  </div>
</template>

<script>
import MdEditor from 'vue-qn-md-editor'

export default {
  name: 'App',
  components: {
    MdEditor
  },
  data () {
    return {
      mdInfo: ''
    }
  },
  methods: {
    getUploadToken () {
      // 實現(xiàn)獲取七牛云上傳token
      // fetch('/api/token').then((token) => {todo...})
      const token = 'YOXpF0XvM_3yVDsz5C-hWwrFE5rtDAUQC3XjBQEG:A'
      this.$refs.editor.setToken(token)
    }
  }
}
</script>

github地址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容