推薦一款基於Vue的Markdown編輯器外掛——mavonEditor

hinesboy發表於2018-04-21

github地址

演示地址

特點

  • 支援簡體中文、英語、法語、西班牙語四種語言
  • 移動端適配
  • 語法擴充全面
  • 支援圖片上傳
  • 文件豐富、功能豐富且可配置

mavonEditor

npm

基於Vue的markdown編輯器

English Documents

Demo for jsfiddle

example (圖片展示)

PC

PC

PC

Install mavon-editor (安裝)

$ npm install mavon-editor --save
複製程式碼

Use (如何引入)

index.js:

    // 全域性註冊
    // import with ES6
    import Vue from 'vue'
    import mavonEditor from 'mavon-editor'
    import 'mavon-editor/dist/css/index.css'
    // use
    Vue.use(mavonEditor)
    new Vue({
        'el': '#main',
        data() {
            return { value: '' }
        }
    })
複製程式碼

index.html

<div id="main">
    <mavon-editor v-model="value"/>
</div>
複製程式碼

程式碼高亮

如不需要hightlight程式碼高亮顯示,你應該設定ishljs為false

開啟程式碼高亮props

    // ishljs預設為true
    <mavon-editor :ishljs = "true"></mavon-editor>
複製程式碼

為優化外掛體積,從v2.4.2起以下檔案將預設使用cdnjs外鏈:

  • highlight.js
  • github-markdown-css
  • katex(v2.4.7)

程式碼高亮highlight.js中的語言解析檔案和程式碼高亮樣式將在使用時按需載入. github-markdown-csskatex僅會在mounted時載入

Notice: 可選配色方案支援的語言 是從 highlight.js/9.12.0 匯出的

圖片上傳

<template>
    <mavon-editor ref=md @imgAdd="$imgAdd" @imgDel="$imgDel"></mavon-editor>
</template>
exports default {
    methods: {
        // 繫結@imgAdd event
        $imgAdd(pos, $file){
            // 第一步.將圖片上傳到伺服器.
           var formdata = new FormData();
           formdata.append('image', $file);
           axios({
               url: 'server url',
               method: 'post',
               data: formdata,
               headers: { 'Content-Type': 'multipart/form-data' },
           }).then((url) => {
               // 第二步.將返回的url替換到文字原位置![...](./0) -> ![...](url)
               /**
               * $vm 指為mavonEditor例項,可以通過如下兩種方式獲取
               * 1. 通過引入物件獲取: `import {mavonEditor} from ...` 等方式引入後,`$vm`為`mavonEditor`
               * 2. 通過$refs獲取: html宣告ref : `<mavon-editor ref=md ></mavon-editor>,`$vm`為 `this.$refs.md`
               */
               $vm.$img2Url(pos, url);
           })
        }
    }
}
複製程式碼

  • 預設大小樣式為 min-height: 300px , min-width: 300px 可自行覆蓋
  • 基礎z-index: 1500
  • 僅用作展示可以設定props: toolbarsFlag: false , subfield: false, defaultOpen: "preview"

API 文件

props

name 名稱 type 型別 default 預設值 describe 描述
value String 初始值
language String zh-CN 語言選擇,暫支援 zh-CN: 中文簡體 , en: 英文 , fr: 法語, pt-BR: 葡萄牙語
fontSize String 15px 編輯區域文字大小
scrollStyle Boolean true 開啟滾動條樣式(暫時僅支援chrome)
subfield Boolean true true: 雙欄(編輯預覽同屏), false: 單欄(編輯預覽分屏)
defaultOpen String edit: 預設展示編輯區域 , preview: 預設展示預覽區域 , 其他 = edit
placeholder String 開始編輯... 輸入框為空時預設提示文字
editable Boolean true 是否允許編輯
codeStyle String code-github markdown樣式: 預設github, 可選配色方案
toolbarsFlag Boolean true 工具欄是否顯示
navigation Boolean false 預設展示目錄
toolbars Object 如下例 工具欄
ishljs Boolean true 程式碼高亮
imageFilter function null 圖片過濾函式,引數為一個File Object,要求返回一個Boolean, true表示檔案合法,false表示檔案不合法
imageClick function null 圖片點選事件,預設為預覽,可覆蓋
 /*
    預設工具欄按鈕全部開啟, 傳入自定義物件
    例如: {
         bold: true, // 粗體
         italic: true,// 斜體
         header: true,// 標題
    }
    此時, 僅僅顯示此三個功能鍵
 */
toolbars: {
      bold: true, // 粗體
      italic: true, // 斜體
      header: true, // 標題
      underline: true, // 下劃線
      strikethrough: true, // 中劃線
      mark: true, // 標記
      superscript: true, // 上角標
      subscript: true, // 下角標
      quote: true, // 引用
      ol: true, // 有序列表
      ul: true, // 無序列表
      link: true, // 連結
      imagelink: true, // 圖片連結
      code: true, // code
      table: true, // 表格
      fullscreen: true, // 全屏編輯
      readmodel: true, // 沉浸式閱讀
      htmlcode: true, // 展示html原始碼
      help: true, // 幫助
      /* 1.3.5 */
      undo: true, // 上一步
      redo: true, // 下一步
      trash: true, // 清空
      save: true, // 儲存(觸發events中的save事件)
      /* 1.4.2 */
      navigation: true, // 導航目錄
      /* 2.1.8 */
      alignleft: true, // 左對齊
      aligncenter: true, // 居中
      alignright: true, // 右對齊
      /* 2.2.1 */
      subfield: true, // 單雙欄模式
      preview: true, // 預覽
  }
複製程式碼

events

name 方法名 params 引數 describe 描述
change String: value , String: render 編輯區發生變化的回撥事件(render: value 經過markdown解析後的結果)
save String: value , String: render ctrl + s 的回撥事件(儲存按鍵,同樣觸發該回撥)
fullScreen Boolean: status , String: value 切換全屏編輯的回撥事件(boolean: 全屏開啟狀態)
readModel Boolean: status , String: value 切換沉浸式閱讀的回撥事件(boolean: 閱讀開啟狀態)
htmlCode Boolean: status , String: value 檢視html原始碼的回撥事件(boolean: 原始碼開啟狀態)
subfieldToggle Boolean: status , String: value 切換單雙欄編輯的回撥事件(boolean: 雙欄開啟狀態)
previewToggle Boolean: status , String: value 切換預覽編輯的回撥事件(boolean: 預覽開啟狀態)
helpToggle Boolean: status , String: value 檢視幫助的回撥事件(boolean: 幫助開啟狀態)
navigationToggle Boolean: status , String: value 切換導航目錄的回撥事件(boolean: 導航開啟狀態)
imgAdd String: filename, File: imgfile 圖片檔案新增回撥事件(filename: 寫在md中的檔名, File: File Object)
imgDel String: filename 圖片檔案刪除回撥事件(filename: 寫在md中的檔名)

相關文章