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 相关文章推荐
window.navigate 与 window.location.href 的使用区别介绍
Sep 21 Javascript
Javascript 颜色渐变效果的实现代码
Oct 01 Javascript
浅谈jquery回调函数callback的使用
Jan 30 Javascript
jQuery表格插件datatables用法汇总
Mar 29 Javascript
JS封装的三级联动菜单(使用时只需要一行js代码)
Oct 24 Javascript
Node.js中文件操作模块File System的详细介绍
Jan 05 Javascript
基于vuejs实现一个todolist项目
Apr 11 Javascript
vue服务端渲染的实例代码
Aug 28 Javascript
bootstrap中selectpicker下拉框使用方法实例
Mar 22 Javascript
三分钟学会用ES7中的Async/Await进行异步编程
Jun 14 Javascript
Element UI 自定义正则表达式验证方法
Sep 04 Javascript
JS原型对象操作实例分析
Jun 06 Javascript
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中的时间显示
2007/01/18 PHP
ezSQL PHP数据库操作类库
2010/05/16 PHP
ThinkPHP实现将本地文件打包成zip下载
2014/06/26 PHP
浅谈php和.net的区别
2014/09/28 PHP
一个非常完美的读写ini格式的PHP配置类分享
2015/02/12 PHP
学习php设计模式 php实现备忘录模式(Memento)
2015/12/09 PHP
PHP通过CURL实现定时任务的图片抓取功能示例
2016/10/03 PHP
php 如何禁用eval() 函数实例详解
2016/12/01 PHP
PHP CURL采集百度搜寻结果图片不显示问题的解决方法
2017/02/03 PHP
Div自动滚动到末尾的代码
2008/10/26 Javascript
15款优秀的jQuery导航菜单插件分享
2011/07/19 Javascript
Jquery实现$.fn.extend和$.extend函数
2016/04/14 Javascript
JavaScript事件处理的方式(三种)
2016/04/26 Javascript
原生js的数组除重复简单实例
2016/05/24 Javascript
JS验证input输入框(字母,数字,符号,中文)
2017/03/23 Javascript
微信小程序开发之麦克风动画 帧动画 放大 淡出
2017/04/18 Javascript
微信小程序 选项卡的简单实例
2017/05/24 Javascript
使用js获取伪元素的content实例
2017/10/24 Javascript
Angular5升级RxJS到5.5.3报错:EmptyError: no elements in sequence的解决方法
2018/04/09 Javascript
关于js的三种使用方式(行内js、内部js、外部js)的程序代码
2018/05/05 Javascript
JavaScript实现连连看连线算法
2019/01/05 Javascript
Layui Table js 模拟选中checkbox的例子
2019/09/03 Javascript
[01:34]2016国际邀请赛中国区预选赛IG战队教练采访
2016/06/27 DOTA
使用tqdm显示Python代码执行进度功能
2019/12/08 Python
Python3.7+tkinter实现查询界面功能
2019/12/24 Python
使用 PyTorch 实现 MLP 并在 MNIST 数据集上验证方式
2020/01/08 Python
使用gunicorn部署django项目的问题
2020/12/30 Python
解决pytorch 的state_dict()拷贝问题
2021/03/03 Python
新学期决心书
2014/03/11 职场文书
旅游活动总结
2014/08/27 职场文书
高中生学习计划书
2014/09/15 职场文书
意外伤害赔偿协议书范文
2014/09/23 职场文书
解除劳动合同证明书模板
2014/11/20 职场文书
清明节寄语2015
2015/03/23 职场文书
2015年主婚人婚礼致辞
2015/07/28 职场文书
企业内部管理控制:采购授权审批制度范本
2020/01/19 职场文书