:大致思路
参考源码:https://github.com/star7th/showdoc
editormd.vue中引入下载的editor.md的文件, 即书写配置选项的path路径
页面中引用editormd.vue
一, 了解一下editormd的属性与方法
用requirejs等工具引入所有所需依赖以后,window上就会挂载editormd方法,可直接调用
1 用于编辑的editormd
Auto height test
// 用于在外部添加功能
var testEditor = editormd("test-editormd", { // 配置选项对象
autoHeight: true, // 自动高度
atLink : false, // disable @link
codeFold: true, // 代码折叠
emailLink : false, // disable email address auto link
emoji : true,
flowChart : true, //流程图
height : 640,
syncScrolling: true | false | 'single' // 编辑与预览是否同步滚动 默认true
htmlDecode : "style,script,iframe",
lineNumbers : false // 隐藏编辑窗口行号,默认true
mode: 'text/html', // ["text/html", "javascript", "php", "text/xml", "text/json", "clike", "javascript", "perl", "go", "python", "clike", "css", "ruby"];
path : "../lib/", // 下载的editor.md文件夹下的lib目录地址
placeholder: 'Enjoy coding!',
readOnly: true, // 开启会隐藏toolbar
saveHTMLToTextarea : true,
searchReplace: true,
sequenceDiagram : true, // 时序图,系列图
styleActiveLine : false, // 高亮鼠标所在行,默认true
taskList : true, // - [ ] this // - [x] this 是否支持该md语法,默认false
todoList: true,
tex : true, // katex科学公式 默认false
toc: true,
tocContainer: '某的id如: #id', // ''空字符串表示默认的textarea, 有id表示为textarea外部
tocDropdown : true, // 下拉菜单,自动索引###
tocStartLevel : 4 , // #### 顶格为4, 不渲染h1,h2,h3 .默认:1,
toolbar: false, // 是否显示工具栏
toolbarIcons:'"undo", "redo"',
theme: (localStorage.theme) ? localStorage.theme : "default",
value: $('#id').val(), // textarea首尾标签之间的内容
watch: false, // 初始化时显示预览? 默认true
imageUpload: false, //文件本地上传 默认false,
width : "90%",
})
}
// 实例方法,可用于外部添加btn
testEditor.appendMarkdown(md);
testEditor.config('syncScrolling', true)
testEditor.getMarkdown(); // 获取 Markdown 源码
testEditor.getHTML(); // 获取 Textarea 保存的 HTML 源码
testEditor.getPreviewedHTML(); // 获取预览窗口里的 HTML,在开启 watch 且没有开启 saveHTMLToTextarea 时使用
testEditor.getValue(),
testEditor.setValue(code);
testEditor.fullscreen();
testEditor.setTheme(theme); // var theme = editormd.themes[i];
testEditor.setCodeMirrorOption("mode", mode);
testEditor.watch();
testEditor.unwatch();
用于编辑的editor.md 使用过程注意点:
1, 不支持v-model, 有因为需要特殊的保存为.md格式
2用于显示的editor.md
总结了部分后我就停笔了,因为感觉到配置选项应该是一样的
// textarea可缺省
$(function(){
var testEditormdView;
$.get('url').then(markdown=>{
testEditorView = editormd.markdownToHtml('test-editor-view',{
markdown: markdown,
// htmlDecode: true // 开启html标签解析,为了安全性,默认不开启
htmlDecode: "style,script,iframe",
taskList: true,
tex: true, // 默认false
flowChart: true, // 默认false
sequenceDiagram: true // 默认false
}))
//实例方法
testEditormdView.getMarkdown()
})
二: 简单封装vue-editormd组件
1, 定义处,
2, 引入处
1, 编辑:
两件事: 保存.md, 初始化渲染md
1, 保存:
import Editormd from '../../../utils/editormd/Editormd.vue'
components: {
Editormd
},
2, 初始化:
在vue-editormd组件中写了v-html = content即可
2, 纯渲染(vue组件中):
END