Vue引入mavon-editor外掛實現markdown功能
說明
mavon-editor是一款基於Vue的markdown編輯器,因為當前專案是採用Nuxt,所以這裡所展示的教程是針對Nuxt引入mavon-editor外掛,如果你只是採用了
Vue,沒有用Nuxt框架,那麼你可以看mavon-editor官方文件,有詳細說明,其實它們只有在引入mavon-editor方式有細微差別,使用都是一樣的。mavonEditor官方地址
一、Nuxt引入mavon-editor外掛
1、安裝
通過命令安裝外掛
npm install mavon-editor --save
2、在plugins中建立vueMarkdown.js
import Vue from 'vue'
import mavonEditor from 'mavon-editor'
import "mavon-editor/dist/css/index.css";
Vue.use(mavonEditor)
3、在nuxt.config.js中引入
plugins: [
'~/plugins//vueMarkdown.js',
],
這三步也是Nuxt新增外掛的標準3步曲了。既然外掛已經新增完成,那麼接下來就是使用了,使用應該包含兩部分:1)編輯markdown文件並儲存。2)回顯markdown資料。
二、使用mavon-editor編輯
1、原始碼
<template>
<div class="home">
<mavon-editor
ref="md"
placeholder="請輸入文件內容..."
:boxShadow="false"
style="z-index:1;border: 1px solid #d9d9d9;height:50vh"
v-model="content"
:toolbars="toolbars"
/>
</div>
</template>
<script>
export default {
name: "home",
components: {},
data() {
return {
content: "",
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: false, // 儲存(觸發events中的save事件)
/* 1.4.2 */
navigation: true, // 導航目錄
/* 2.1.8 */
alignleft: true, // 左對齊
aligncenter: true, // 居中
alignright: true, // 右對齊
/* 2.2.1 */
subfield: true, // 單雙欄模式
preview: true // 預覽
}
};
},
methods: {
// 上傳圖片方法
$imgAdd(pos, $file) {
console.log(pos, $file);
}
}
};
</script>
2、頁面展示編輯器效果
頁面展示效果如下
我們可以看到我們已經可以正常使用markdown編輯器了,說明當前外掛安裝成功,可以用。
三、使用mavon-editor回顯
上一步是已經可以編輯,但我們還需要將我們編輯好已經存在資料庫的資料,回顯在頁面。
1、原始碼
<no-ssr>
<mavon-editor
v-highlight
class="md"
:value="content"
:subfield = "false"
:defaultOpen = "'preview'"
:toolbarsFlag = "false"
:editable="false"
:scrollStyle="true"
></mavon-editor>
</no-ssr>
屬性解釋
:value="content":引入要轉換的內容
:subfield = "false":開啟單欄模式
:defaultOpen = "'preview'":預設展示預覽區域
:toolbarsFlag = "false":關閉工具欄
:editable="false":不允許編輯
scrollStyle="true":開啟滾動條樣式(暫時僅支援chrome)
2、頁面展示效果
這樣一來整個編輯回顯的效果這裡都展示出來了。
四、程式碼高亮
上面展示的時候確實已經可以正常回顯markdown文件,但還不美觀,我們想要的就是隻要是程式碼都能高亮的顯示出來,你可以用highlight.js外掛,但我在使用中並沒有達到我
自己喜歡的樣式,所以我這邊自己修改了部分css樣式。這裡把css樣式展示如下。
.markdown-body .lang- {
display: block;
overflow: auto;
padding: 1.3em 2em !important;
font-size: 16px !important;
background: #272822 !important;
color: #FFF;
max-height: 700px;
}
.markdown-body .hljs {
display: block;
overflow: auto;
padding: 1.3em 2em !important;
font-size: 16px !important;
background: #272822 !important;
color: #FFF;
max-height: 700px;
}
.hljs,
.hljs-tag,
.hljs-subst {
color: #f8f8f2 !important;
}
.hljs-strong,
.hljs-emphasis {
color: #a8a8a2 !important;
}
.hljs-bullet,
.hljs-quote,
.hljs-number,
.hljs-regexp,
.hljs-literal,
.hljs-link {
color: #ae81ff !important;
}
.hljs-code,
.hljs-title,
.hljs-section,
.hljs-selector-class {
color: #a6e22e !important;
}
.hljs-strong {
font-weight: bold;
}
.hljs-emphasis {
font-style: italic;
}
.hljs-keyword,
.hljs-selector-tag,
.hljs-name,
.hljs-attr {
color: #f92672 !important;
}
.hljs-symbol,
.hljs-attribute {
color: #66d9ef !important;
}
.hljs-params,
.hljs-class .hljs-title {
color: #f8f8f2 !important;
}
.hljs-string,
.hljs-type,
.hljs-built_in,
.hljs-builtin-name,
.hljs-selector-id,
.hljs-selector-attr,
.hljs-selector-pseudo,
.hljs-addition,
.hljs-variable,
.hljs-template-variable {
color: #e6db74 !important;
}
.hljs-comment,
.hljs-deletion,
.hljs-meta {
color: #75715e !important;
}
然後我們再來看頁面展示效果
是不是明顯感覺程式碼已經高亮,整體看去的視覺效果比上面的要好多了。
總結
這裡有關編輯儲存與後臺介面互動的邏輯沒有貼上出來,還有如果使用markdown編輯器上傳圖片這裡也沒有說明,具體的可以看下官方文件。
參考
少說多做,句句都會得到別人的重視;多說少做,句句都會受到別人的忽視。(16)