JS加载解析Markdown文档过程详解


Posted in Javascript onMay 19, 2020

网上有很多网站会通过.md文档来做页面内容,很好奇,这是怎么做的?

出于好奇,建了一个test.md文件:

# Hello World! 
asdfa 
asd 
*斜体文本* 
**粗体文本** 
***斜粗体文本*** 
分隔线(如下) 
***
* * *
****
- - -
-----------
GOOGLE.COM 
~~删除线~~ 
<u>下划线</u>

JS加载解析Markdown文档过程详解

用浏览器打开之后,结果就被原封不动的输出来了,浏览器根本不会解析这玩意... 跟阮老师的blog相差好大啊~呵呵~还是太天真了!

然后,发现:

JS加载解析Markdown文档过程详解

原来markdown文本还是需要用marked.js这么一个库来解析的!于是乎,依葫芦画个瓢

<!doctype html>
<html>
<head>
 <meta charset="utf-8"/>
 <title>md文档内容转成html显示</title>
</head>
<body>
 <div id="content" style="width: 500px;height: 500px;overflow: auto"></div>
 <div style="margin-top: 30px">
   <form name="form" action="" method="post">
    <select name="q">
      <option value="md/gs.md">公式</option>
      <option value="md/test.md">第一个Markdown文档</option>
    </select>
    <input type="button" value="显示" onclick="showMarkdown()">
  </form>
 </div>
 <script type="text/javascript" src='https://cdn.jsdelivr.net/npm/marked/marked.min.js'></script>
 <script type="text/javascript">
   function showMarkdown() {
     var f = form;
     var xmlhttp;
     if (window.XMLHttpRequest) {
       xmlhttp = new XMLHttpRequest();
     } else {
       xmlhttp = new ActiveXObject('Microsoft.XMLHttp');
     }

     xmlhttp.onreadystatechange = function() {
       if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
         document.getElementById('content').innerHTML = marked(xmlhttp.responseText);
       }
     }

     // 向服务器发送请求
     xmlhttp.open('GET', f.q.value, true);
     xmlhttp.send();
   }
 </script>
</body>
</html>

于是就有了下面的样子:

JS加载解析Markdown文档过程详解

原理就是用ajax请求,取到 .md文件里的内容,再通过marked.js提供的marked()方法将markdown语法的文本转成html文档。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery)扩展jQuery系列之一 模拟alert,confirm(一)
Dec 04 Javascript
基于jQuery的模仿新浪微博时间的组件
Oct 04 Javascript
JS图片自动轮换效果实现思路附截图
Apr 30 Javascript
jQuery实现图片预加载效果
Nov 27 Javascript
javascript实现unicode与ASCII相互转换的方法
Dec 10 Javascript
js中flexible.js实现淘宝弹性布局方案
Jun 23 Javascript
js+css3制作时钟特效
Oct 16 Javascript
巧用Javascript的逻辑运算符
Dec 02 Javascript
整理关于Bootstrap警示框的慕课笔记
Mar 29 Javascript
小程序云开发如何实现图片上传及发表文字
May 17 Javascript
vue 中 elment-ui table合并上下两行相同数据单元格
Dec 26 Javascript
Vue多选列表组件深入详解
Mar 02 Vue.js
bootstrapValidator表单校验、更改状态、新增、移除校验字段的实例代码
May 19 #Javascript
jQuery 常用特效实例小结【显示与隐藏、淡入淡出、滑动、动画等】
May 19 #jQuery
jQuery AJAX应用实例总结
May 19 #jQuery
单线程JavaScript实现异步过程详解
May 19 #Javascript
vue相关配置文件详解及多环境配置详细步骤
May 19 #Javascript
JS使用for in有序获取对象数据
May 19 #Javascript
基于js实现数组相邻元素上移下移
May 19 #Javascript
You might like
php制作文本式留言板
2015/03/18 PHP
PHP简单实现数字分页功能示例
2016/08/24 PHP
laravel在中间件内生成参数并且传递到控制器中的2种姿势
2019/10/15 PHP
分享XmlHttpRequest调用Webservice的一点心得
2012/07/20 Javascript
输入密码检测大写是否锁定js实现代码
2012/12/03 Javascript
将HTML的左右尖括号等转义成实体形式的两种实现方式
2014/05/04 Javascript
JS和JQ的event对象区别分析
2014/11/24 Javascript
动态加载js的方法汇总
2015/02/13 Javascript
Jquery easyui 实现动态树
2015/11/17 Javascript
浅析JavaScript回调函数应用
2016/05/22 Javascript
Extjs让combobox写起来简洁又漂亮
2017/01/05 Javascript
jquery easyui DataGrid简单示例
2017/01/23 Javascript
jQuery源码分析之sizzle选择器详解
2017/02/13 Javascript
JavaScript关联数组用法分析【概念、定义、遍历】
2017/03/15 Javascript
vue中Element-ui 输入银行账号每四位加一个空格的实现代码
2018/09/14 Javascript
Node.js 获取微信JS-SDK CONFIG的方法示例
2019/05/21 Javascript
seajs和requirejs模块化简单案例分析
2019/08/26 Javascript
layui表格内放置图片,并点击放大的实例
2019/09/10 Javascript
基于Vue全局组件与局部组件的区别说明
2020/08/11 Javascript
[07:55]2014DOTA2 TI正赛第三日 VG上演推进荣耀DKEG告别
2014/07/21 DOTA
13个最常用的Python深度学习库介绍
2017/10/28 Python
使用pickle存储数据dump 和 load实例讲解
2019/12/30 Python
python手机号前7位归属地爬虫代码实例
2020/03/31 Python
html5指南-3.如何实现html元素拖拽功能
2013/01/07 HTML / CSS
Made in Design英国:设计家具、照明、家庭装饰和花园家具
2019/09/24 全球购物
什么是接口(Interface)?
2013/02/01 面试题
电脑饰品店的创业计划书
2014/01/21 职场文书
自荐信的基本格式
2014/02/22 职场文书
个人担保书范文
2014/05/20 职场文书
乡镇计划生育工作汇报
2014/10/28 职场文书
旷工检讨书1000字
2015/01/01 职场文书
三八节活动主持词
2015/07/04 职场文书
幼儿园秋季开学通知
2015/07/16 职场文书
签证扫盲贴,41个常见签证知识,需要的拿走
2019/08/09 职场文书
Tensorflow与RNN、双向LSTM等的踩坑记录及解决
2021/05/31 Python
spring 项目实现限流方法示例
2022/07/15 Java/Android