markdown转html前台展示

前言

前端html不支持直接显示md格式代码,所以我们需要进行转换。
转换方式有好几种,以下展示两种

方式一

通过editormd.markdownToHTML渲染

主要是通过editor的渲染功能将md格式转为html并展示出来。

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>editormd</title>
    <!-- 页面解析markdown为HTML显示需要的css -->
    <link rel="stylesheet" href="editormd/css/editormd.css"/>
    <link rel="stylesheet" href="highlight/styles/default.css"/>
</head>
<body>
<div id="myEditor" style="width: max-content;">
    <textarea style="display:none;" th:text="${md}"></textarea>
</div>
<script src="https://cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script>
<script src="editormd/editormd.min.js"></script>
<!-- 页面markdown解析成HTML需要的js -->
<script src="editormd/lib/marked.min.js"></script>
<script src="editormd/lib/prettify.min.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/lib/jquery.flowchart.min.js"></script>
<!--通过editor.md渲染-->
<script type="text/javascript">
    editormd.markdownToHTML("myEditor", {
        htmlDecode      : "style,script,iframe",  // you can filter tags decode
        emoji           : true,
        taskList        : true,
        tex             : true,  // 默认不解析
        flowChart       : true,  // 默认不解析
        sequenceDiagram : true  // 默认不解析
    });
</script>
<script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/10.7.2/highlight.min.js"></script>
<script type="text/javascript">
      hljs.initHighlightingOnLoad();
</script>
</body>
</html>

以上用到了代码高亮插件:highlight.js 插件,官网地址:https://highlightjs.org/

代码高亮渲染

1.html hljs.initHighlightingOnLoad(); 将高亮显示绑定到页面加载完成触发的事件上。
2.highlightBlock(block)对包含代码的 DOM 节点添加高亮标记。默认使用语言检测,但是你也可以在节点上添加 class 属性来指定语言。
参数:

  • block : DOM 节点

3.initHighlighting()
为页面中所有 <pre><code>..</code></pre> 块添加高亮标记。配合 styles 中的 css 使用即可实现着色。

未完待续......

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,161评论 1 32
  • iOS面试题目100道 1.线程和进程的区别。 进程是系统进行资源分配和调度的一个独立单位,线程是进程的一个实体,...
    有度YouDo阅读 30,018评论 8 137
  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,688评论 8 265
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 8,610评论 28 53
  • 信任包括信任自己和信任他人 很多时候,很多事情,失败、遗憾、错过,源于不自信,不信任他人 觉得自己做不成,别人做不...
    吴氵晃阅读 6,232评论 4 8