博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Markdown编辑器editor.md的使用
阅读量:2437 次
发布时间:2019-05-10

本文共 2963 字,大约阅读时间需要 9 分钟。

一、Markdown和editor.md简介:

Markdown在技术圈里(估计更多是程序猿吧)越来越流行。简单的语法,统一的格式,使用过程中,手基本上不用从键盘上移到鼠标上去,超级方便。写好了一篇md文档(也就是含Markdown语法格式的普通TXT文件),可以随意放到别的支持Markdown格式的网站上发布。

editor.md是国内开源的一款在线Markdown编辑器,单纯基于前端JavaScript实现,和后端什么语言无关。这个还可以画流程图,以及数学公式。官网Demo示例使用的是PHP语言,我后端使用的是Java,Springmvc。

如下记录我在个人开源项目17Smart中使用的方法和过程。17Smart源码目前托管在Github上,感兴趣的可以参考了解。

二、editor.md的使用:

2.1、下载:

我们可以从其官网中找到下载最新版V1.5.0,解压资源包如下图:

1.examples文件中是使用PHP做的所有示例(可以在文档编辑器里打开,并查看源代码);

2.lib中是editor.md所依赖的第三方js资源;
3.plugins中是如emoji表情支持、代码格式化等插件;

2.2、简单使用:

将上面的解压的editormd资源文件拷贝(选取需要的)到我们的项目适合目录下面。

2.2.1、在自己的页面上引入相关的css和js,代码如下:

2.2.2、在自己的页面中加上DIV:

DIV的id为my-editormd(这个div在form表单中)。DIV中包含二个textarea,其实官方demo中只有一个,第二个是否方便我们POST提交时,后端可以获取到md文档内容,如java中request.getParameter(“my-editormd-html-code”)。

这里值得注意两点:

1.后端要想获得第二个textarea中的值,首先需要打开editor.md的saveHTMLToTextarea : true设置(见下面);

2.textarea中name属性值,应该跟着div的IDmy-editormd值来定,即$-html-code(刚开始,后端死活获取不到值,翻看了源码才知道)

2.2.3、在同页面中再加上如下JS代码:

1234567891011

这里值得注意三点:

1.注意1:这里的就是上面的DIV的id属性值;

2.注意2:你的path路径(原资源文件中lib包在我们项目中所放的位置);
3.注意3:saveHTMLToTextarea 设置true或false关乎后端是否可以获取到值;

这样我们就完成了一个最简单的editor.md的编辑器了,我们可以在这里面书写自己熟悉的Markdown文档,包括代码,右侧有实时预览。

2.3、上传图片:

上面最简单的editor.md的编辑器,目前还是不可以上传图片的。我们需要略作配置修改,还是很简单的。

我们都知道在编写Markdown文档时,图片语法是说明。可是,往往我们需要上传本地图片。在上面的基础之上,略做如下修改即可(当然后端的代码得自己写):

注意:editor.md期望你上传图片的服务返回如下json格式的内容

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

我的后台使用的是springmvc,代码如下:

(注意:@RequestParam(value = “editormd-image-file”, required = true注解)

@RequestMapping("editormdPic")@ResponseBodypublic JSONObject editormdPic (@RequestParam(value = "editormd-image-file", required = true) MultipartFile file, HttpServletRequest request,HttpServletResponse response) throws Exception{
String trueFileName = file.getOriginalFilename(); String suffix = trueFileName.substring(trueFileName.lastIndexOf(".")); String fileName = System.currentTimeMillis()+"_"+CommonUtils.getRandomNumber(100, 999)+suffix; String path = request.getSession().getServletContext().getRealPath("/assets/msg/upload/"); System.out.println(path); File targetFile = new File(path, fileName); if(!targetFile.exists()){
targetFile.mkdirs(); } //保存 try {
file.transferTo(targetFile); } catch (Exception e) {
e.printStackTrace(); } JSONObject res = new JSONObject(); res.put("url", Constant.WEB_ROOT+"assets/msg/upload/"+fileName); res.put("success", 1); res.put("message", "upload success!"); return res; }

2.4、Markdown文档页面展示:

上面我们通过post提交,后端获取到MD文档内容后,往往存在数据库中,然后在页面展示时,我们需要把MD语法文档,转换为HTML语法(也可以先转换为标准的HTML存储,但我觉得先转换的话,会占用较多存储空间)。

首先引入必要JS(下面不是所有必要):

然后,本页面中,加入如下DIV:

最后,再引入如下JS代码:

三、editor.md的更多配置项:

这配置,可以根据官方提供的Demo和源码找到(editor.md-master/examples目录下面)。如,主题颜色设置;上传图片后的特殊处理等。

四、源码:

源码:

转载地址:http://kggmb.baihongyu.com/

你可能感兴趣的文章
TABLESPACE tablespace02
查看>>
local nopartition index:
查看>>
PARTITION partition04
查看>>
应该算是系统繁忙,一般社保局下午2点钟工作很忙的。
查看>>
关于temp表空间的问题
查看>>
RAC警示录-----各位兄弟补充
查看>>
关于oracle的dbconsole
查看>>
A. Drop and re-create the inbox.
查看>>
发表于 2008-1-30 12:28
查看>>
关于RAC的GV视图的问题
查看>>
实现具有动态主机IP的域名解析 (转)
查看>>
数据库对象命名规范问题....
查看>>
QUESTION 121
查看>>
Borland : Java , Java ,and Java again ! (转)
查看>>
教三个问题
查看>>
Confronting .NET myths (转)
查看>>
.NET终结了COM? (转)
查看>>
QUESTION 126
查看>>
Delphi语言优化 (转)
查看>>
完善的Socket Server程序 (转)
查看>>