markdown编辑器之editormd使用整合

不啰嗦看效果

如果觉得对你项目有用请继续深入。

007.gif

1. editor.md简介

  • 1.1 说明

    Editor.md 是一款开源的、可嵌入的 Markdown 在线编辑器(组件),基于 CodeMirror、jQuery 和 Marked 构建。

  • 1.2 项目地址

    github地址:https://github.com/pandao/editor.md

  • 1.3 项目效果图

001.png

2. 项目整合

2.1 下载editormd至自己项目根目录

如下为我的项目目录:

002.png

2.2 项目部署

引入css样式文件和js文件

<!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
 <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" > 
 <!-- 引入editormd样式文件 -->
 <link rel="stylesheet" href="./editormd/css/editormd.css" >
 <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
 <!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
 <script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js" ></script> 
 <script src="./editormd/editormd.js" ></script> 

注意:

务必引入 editormd/css/editormd.csseditormd/editormd.js两个文件。

页面textarea样式

<div id="test-editor">
 <textarea id="inp-content" style="display:none;">这是我首次使用</textarea>
</div>

JS调用代码

<script>
 $(function() {
var editor = editormd("test-editor", {
 height:'350px',
 syncScrolling : "single",
 emoji:true,
 //启动本地图片上传功能
 imageUpload: true,
 watch:true,
 imageFormats   : ["jpg", "jpeg", "gif", "png", "bmp", "webp","zip","rar"],
 path   : "./editormd/lib/",
 imageUploadURL : "./upload.php", //文件提交请求路径
 saveHTMLToTextarea : true, //注意3:这个配置,方便post提交表单
 previewTheme : "dark",//预览主题样式 黑色
 });
})
</script>

配置参数

{
 theme                : "",             // Editor.md self themes, before v1.5.0 is CodeMirror theme, 
 editorTheme          : "default",      // Editor area, this is CodeMirror theme at v1.5.0
 previewTheme         : "",             // Preview area theme, default empty 
 width                : "100%",
 height               : "100%",
 path                 : "./lib/",       // Dependents module file directory
 pluginPath           : "",             // If this empty, default use settings.path + "../plugins/"
 delay                : 300,            // Delay parse markdown to html, Uint : ms
 autoLoadModules      : true,           // Automatic load dependent module files
 watch                : true,
 placeholder          : "Enjoy Markdown! coding now...",
 gotoLine             : true,           // Enable / disable goto a line
 codeFold             : false,
 autoHeight           : false,
 autoFocus            : true,           // Enable / disable auto focus editor left input area
 autoCloseTags        : true,
 searchReplace        : true,           // Enable / disable (CodeMirror) search and replace function
 syncScrolling        : true,           // options: true | false | "single", default true
 saveHTMLToTextarea   : false,          // If enable, Editor will create a <textarea name="{editor-id}-html-code"> tag save HTML code for form post to server-side.
 onload               : function() {},
 onresize             : function() {},
 onchange             : function() {},
 onwatch              : null,
 onunwatch            : null,
 onpreviewing         : function() {},
 onpreviewed          : function() {},
 onfullscreen         : function() {},
 onfullscreenExit     : function() {},
 onscroll             : function() {},
 onpreviewscroll      : function() {},

 imageUpload          : false,          // Enable/disable upload
 imageFormats         : ["jpg", "jpeg", "gif", "png", "bmp", "webp"],
 imageUploadURL       : "",             // Upload url
 crossDomainUpload    : false,          // Enable/disable Cross-domain upload
 uploadCallbackURL    : "",             // Cross-domain upload callback url

 emoji                : false,          // :emoji: , Support Github emoji, Twitter Emoji (Twemoji);
 // Support FontAwesome icon emoji :fa-xxx: > Using fontAwesome icon web fonts;
 // Support Editor.md logo icon emoji :editormd-logo: :editormd-logo-1x: > 1~8x;
 tex                  : false,          // TeX(LaTeX), based on KaTeX
 flowChart            : false,          // flowChart.js only support IE9+
 sequenceDiagram      : false,          // sequenceDiagram.js only support IE9+
 previewCodeHighlight : true,           // Enable / disable code highlight of editor preview area
​
 toolbar              : true,           // show or hide toolbar
 toolbarAutoFixed     : true,           // on window scroll auto fixed position
 toolbarIcons         : "full",         // Toolbar icons mode, options: full, simple, mini, See `editormd.toolbarModes` property.
 toolbarTitles        : {},
 toolbarHandlers      : {
 ucwords : function() {
 return editormd.toolbarHandlers.ucwords;
 },
 lowercase : function() {
 return editormd.toolbarHandlers.lowercase;
 } 
}

显示效果

  • 003.png

界面出来了已经完成很大一部分了。通过设置提交数据打印可以查看editormd提交数据的一个结构

  • 005.png

通过debug我们可有看到提交给后台的数据如下:

  • 004.png

3. 图片上传处理

3.1 editormd的图片上传功能有很多坑,下面我们将依次填坑。

editormd图片上传功能需要设置,要在返回固定格式的json数据,即使在调试时候。扣丁曼在初次使用editormd项目时在此处浪费了很多时间。

开启图片上传参数imageUpload : trueimageFormats : ["jpg", "jpeg", "gif", "png", "bmp", "webp"],imageUploadURL : "./upload.php",

后台返回样式如下:

{
 success : 0 | 1, //0表示上传失败;1表示上传成功
 message : "提示的信息",
 url     : "图片地址" //上传成功时才返回
}

3.2 增加截图上传和拖拽上传图片功能

由于editormd的上传图片功能用户体验并不友好!每次上传图片很费事。

扣丁曼通过收集网上其他小伙伴提供的建议也实现了editormd的截图上传和拖拽上传功能。

  • 新增JS插件代码

    文件名editoemd-image-past.js放置于editormd/plugins文件夹下

<script>
    console.log('代码内较多请通过下载方式查看')
   </script>
  • 页面引入
<script src="./editormd/plugins/editormd-image-past.js"></script>
  • 项目中配置
path   : "__PAGE__/global/plugins/editormd/lib/",
   imageUploadURL : "/uploadFile", //文件提交请求路径
   onload : function() {
    initPasteDragImg(this); //配置图片粘贴上传
    },
   saveHTMLToTextarea : true, //注意3:这个配置,方便post提交表单

4. 前台展示editormd数据

  • 在view页面引入css文件和js文件如下
<!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
     <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" >

     <!-- 引入editormd样式文件 -->
     <link rel="stylesheet" href="./editormd/css/editormd.css" >

 <link href="./editormd/css/sons-of-obsidian.css" rel="stylesheet" type="text/css" />
     <script src="https://cdn.staticfile.org/jquery/1.10.2/jquery.min.js"></script>
      <!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
     <script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js" ></script>    
  • 页面展示区
<div id="test-editormd-view" style="width:700px;" class="blog-single-desc">
         <textarea style="display:none;" id="test-editormd-markdown-doc"><?php echo $data==''? '## 还没有数据哦!':$data;?></textarea>
</div>   
  • js处理
<script src="./editormd/lib/marked.min.js"></script>
    <!-- 第三方界面样式文件google -->
    <script src="./editormd/lib/google-code-prettify/prettify.js"></script>
    <script src="./editormd/lib/raphael.min.js"></script>
    <script src="./editormd/lib/underscore.min.js"></script>
    <script src="./editormd/lib/sequence-diagram.min.js"></script>
    <script src="./editormd/lib/flowchart.min.js"></script>
    <script src="./editormd/editormd.js"></script>
    <script>
    $(function() {
            editormd.markdownToHTML("test-editormd-view", {
                htmlDecode: "style,script,iframe", // you can filter tags decode
                emoji: true,
                taskList: true,
                tex: true, // 默认不解析
                flowChart: false, // 默认不解析
                sequenceDiagram: true, // 默认不解析
                path: "./editormd/lib/",
                previewTheme: "dark"
            });
    });
    </script>
  • 效果图
image.png

5. 项目源码

  • 关注公众号“扣丁曼” 回复editormd获取项目源码。

  • 本项目采用php作为处理语言,其他语种小伙伴请各显神通。

6.联系我

  • 通过公众号“扣丁曼”(号码:qcgcoder)直接与我联系。

  • 通过我的博客获取最新资讯

    博客网址:https://52qcg.cn

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,743评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,296评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,285评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,485评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,581评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,821评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,960评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,719评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,186评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,516评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,650评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,329评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,936评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,757评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,991评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,370评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,527评论 2 349