Vue.jsでマークダウン入力&表示ができるページを作る
こんなページを作ります。mavon-editorを使うと簡単にできました。
編集完了後に編集画面ではなく普通のページを表示する方法が意外と見つからなくて苦戦しました。
※追記
以前 marked
を使ったページ表示方法を記載していましたが、 marked
だと対応していないマークダウン記述が多かったので修正しました。
インストール
npm install mavon-editor
実装
import mavonEditor from 'mavon-editor'
import 'mavon-editor/dist/css/index.css'
import 'mavon-editor/dist/markdown/github-markdown.min.css'
import 'mavon-editor/dist/highlightjs/highlight.min.js'
import 'mavon-editor/dist/katex/katex.min.css'
import 'mavon-editor/dist/katex/katex.min.js'
Vue.use(mavonEditor)
export default {
// 以下略
こんな感じで埋め込み対象のページで import
しつつ、
data: () => ({
mavonEditor: {
externalLink: {
markdown_css: function() {
return '/static/css/markdown/github-markdown.min.css'
},
hljs_js: function() {
return '/static/js/highlightjs/highlight.min.js'
},
katex_css: function() {
return '/static/css/katex/katex.min.css'
},
katex_js: function() {
return '/static/js/katex/katex.min.js'
},
},
// ツールバーにどのボタンを追加するか
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,
code: true,
table: true,
fullscreen: true,
readmodel: true,
htmlcode: true,
help: true,
undo: true,
redo: true,
navigation: true,
alignleft: true,
aligncenter: true,
alignright: true,
subfield: true,
preview: true,
},
},
// マークダウンの内容を格納する変数
body: '',
// 以下、他の変数など
}),
でエディターの設定。
あとは、
<mavon-editor
language="ja"
v-model="body"
:counter="65535"
:externalLink="mavonEditor.externalLink"
:toolbars="mavonEditor.toolbars"
></mavon-editor>
でエディターの表示、
<mavon-editor
language="ja"
v-model="body"
:externalLink="mavonEditor.externalLink"
:subfield="false"
:editable="false"
:toolbarsFlag="false"
:boxShadow="false"
defaultOpen="preview"
previewBackground="#fff"
></mavon-editor>
でエディターで入力された内容の表示を行うことができました。
(外側にborderが表示されてしまうので、気になる方はborderを表示しないCSSを追加)