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 相关文章推荐
一些易混淆且不常用的属性,希望有用
Jan 29 Javascript
js取值中form.all和不加all的区别介绍
Jan 20 Javascript
jQuery中的jQuery()方法用法分析
Dec 27 Javascript
javascript实现瀑布流自适应遇到的问题及解决方案
Jan 28 Javascript
微信浏览器内置JavaScript对象WeixinJSBridge使用实例
May 25 Javascript
JavaScript基础知识及常用方法总结
Jan 10 Javascript
JS小数转换为整数的方法分析
Jan 07 Javascript
利用Javascript实现简单的转盘抽奖
Feb 13 Javascript
JavaScript实现的超简单计算器功能示例
Dec 23 Javascript
Angular6中使用Swiper的方法示例
Jul 09 Javascript
vue.js实现的幻灯片功能示例
Jan 18 Javascript
vue如何使用rem适配
Feb 06 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
在PWS上安装PHP4.0正式版
2006/10/09 PHP
Gregarius中文日期格式问题解决办法
2008/04/22 PHP
浅析php中jsonp的跨域实例
2013/06/21 PHP
浅析PHP类的反射来实现依赖注入过程
2018/02/06 PHP
document.designMode的功能与使用方法介绍
2007/11/22 Javascript
js导航栏单击事件背景变换示例代码
2014/01/13 Javascript
JavaScript获取浏览器信息的方法
2015/11/20 Javascript
JavaScript提高网站性能优化的建议(二)
2016/07/24 Javascript
JS跨域请求外部服务器的资源
2017/02/06 Javascript
js es6系列教程 - 基于new.target属性与es5改造es6的类语法
2017/09/02 Javascript
VSCode中如何利用d.ts文件进行js智能提示
2018/04/13 Javascript
angular5 子组件监听父组件传入值的变化方法
2018/09/30 Javascript
JavaScript运行机制实例分析
2020/04/11 Javascript
python实现去除下载电影和电视剧文件名中的多余字符的方法
2014/09/23 Python
python unittest实现api自动化测试
2018/04/04 Python
Python中的上下文管理器和with语句的使用
2018/04/17 Python
pandas 将list切分后存入DataFrame中的实例
2018/07/03 Python
python如何获取当前文件夹下所有文件名详解
2019/01/25 Python
python 内置函数汇总详解
2019/09/16 Python
pygame实现俄罗斯方块游戏(AI篇2)
2019/10/29 Python
matplotlib设置颜色、标记、线条,让你的图像更加丰富(推荐)
2020/09/25 Python
python如何实现递归转非递归
2021/02/25 Python
初中政治教学反思
2014/01/17 职场文书
高二地理教学反思
2014/01/24 职场文书
护理学应聘自荐书范文
2014/02/05 职场文书
2014审计局领导班子民主生活会对照检查材料思想汇报
2014/09/20 职场文书
2015年班组工作总结
2015/04/20 职场文书
关爱留守儿童捐款倡议书
2015/04/27 职场文书
大学团日活动总结书
2015/05/11 职场文书
结婚喜宴迎宾词
2015/08/10 职场文书
长辈生日祝福语大全(72句)
2019/08/09 职场文书
2019年教师节活动策划方案
2019/09/09 职场文书
2019年家电促销广告语集锦
2019/10/21 职场文书
CSS3 天气图标动画效果
2021/04/06 HTML / CSS
部分武汉产收音机展览
2022/04/07 无线电
OpenFeign实现远程调用
2022/08/14 Java/Android