推薦一款基於Vue的Markdown編輯器插件——mavonEditor

github地址javascript

演示地址css

特色

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

mavonEditor

npm

基於Vue的markdown編輯器html

English Documents

Demo for jsfiddlevue

example (圖片展現)

PC

PC

PC

Install mavon-editor (安裝)

$ npm install mavon-editor --save
複製代碼

Use (如何引入)

index.js:java

// 全局註冊
    // 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.htmlios

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

代碼高亮

如不須要hightlight代碼高亮顯示,你應該設置ishljs爲falsegit

開啓代碼高亮propsgithub

// ishljs默認爲true
    <mavon-editor :ishljs = "true"></mavon-editor> 複製代碼

爲優化插件體積,從v2.4.2起如下文件將默認使用cdnjs外鏈:chrome

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

代碼高亮highlight.js中的語言解析文件和代碼高亮樣式將在使用時按需加載. github-markdown-csskatex僅會在mounted時加載npm

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中的文件名)
相關文章
相關標籤/搜索