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实现的类似百度搜索的输入框自动完成功能
Aug 23 Javascript
jQuery版仿Path菜单效果
Dec 15 Javascript
js在输入框屏蔽按键,只能键入数字的示例代码
Jan 03 Javascript
JS可以控制样式的名称写法一览
Jan 16 Javascript
jQuery toggleClass应用实例(附效果图)
Apr 06 Javascript
node.js正则表达式获取网页中所有链接的代码实例
Jun 03 Javascript
Ajax+FormData+javascript实现无刷新表单信息提交
Oct 24 Javascript
快速使用node.js进行web开发详解
Apr 26 Javascript
layui文件上传实现代码
May 20 Javascript
vue实现百度搜索下拉提示功能实例
Jun 14 Javascript
用React实现一个完整的TodoList的示例代码
Oct 30 Javascript
Vue学习之组件用法实例详解
Jan 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类的反射用法实例
2014/11/03 PHP
PHP笛卡尔积实现原理及代码实例
2020/12/09 PHP
jQuery使用手册之三 CSS操作
2007/03/24 Javascript
30个最好的jQuery 灯箱插件分享
2011/04/25 Javascript
多种方法实现JS动态添加事件
2013/11/01 Javascript
jquery自定义下拉列表示例
2014/04/25 Javascript
js生成随机数的方法实例
2015/10/16 Javascript
getElementById().innerHTML与getElementById().value的区别
2016/10/27 Javascript
利用Node.js对文件进行重命名
2017/03/12 Javascript
Vue.js对象转换实例
2017/06/07 Javascript
基于Vue实例生命周期(全面解析)
2017/08/16 Javascript
javascript 中模板方法单例的实现方法
2017/10/17 Javascript
详解html-webpack-plugin用法全解
2018/01/22 Javascript
微信小程序scroll-view组件实现滚动动画
2018/01/31 Javascript
jquery动态添加带有样式的HTML标签元素方法
2018/02/24 jQuery
基于Koa(nodejs框架)对json文件进行增删改查的示例代码
2019/02/02 NodeJs
基于vue-draggable 实现三级拖动排序效果
2020/01/10 Javascript
vue-cli3 取消eslint校验代码的解决办法
2020/01/16 Javascript
[01:50]2014DOTA2西雅图邀请赛 专访欢乐周宝龙
2014/07/08 DOTA
[01:29:46]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第二局
2016/02/27 DOTA
Python列表推导式的使用方法
2013/11/21 Python
python中urllib模块用法实例详解
2014/11/19 Python
python中如何使用朴素贝叶斯算法
2017/04/06 Python
python实现决策树
2017/12/21 Python
Python读取csv文件分隔符设置方法
2019/01/14 Python
python列表返回重复数据的下标
2020/02/10 Python
浅谈Keras中shuffle和validation_split的顺序
2020/06/19 Python
详解python中的异常捕获
2020/12/15 Python
利用Python实现自动扫雷小脚本
2020/12/17 Python
会走动的图形html5时钟示例
2014/04/27 HTML / CSS
任意存:BOXFUL
2018/05/21 全球购物
英国最受欢迎的在线隐形眼镜商店:VisionDirect.co.uk
2018/12/06 全球购物
大学毕业的自我鉴定
2013/10/08 职场文书
介绍信如何写
2015/01/31 职场文书
2016年10月份红领巾广播稿
2015/12/21 职场文书
创业计划书之干洗店
2019/09/10 职场文书