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 相关文章推荐
javascript实现博客园页面右下角返回顶部按钮
Feb 22 Javascript
jquery实现简单的二级导航下拉菜单效果
Sep 07 Javascript
利用vue+elementUI实现部分引入组件的方法详解
Nov 22 Javascript
浅谈vue的几种绑定变量的值 防止其改变的方法
Mar 01 Javascript
vue iView 上传组件之手动上传功能
Mar 16 Javascript
Vue使用vue-area-linkage实现地址三级联动效果的示例
Jun 27 Javascript
vue实现引入本地json的方法分析
Jul 12 Javascript
vue项目持久化存储数据的实现代码
Oct 01 Javascript
简单的React SSR服务器渲染实现
Dec 11 Javascript
详解Vue.js v-for不支持IE9的解决方法
Dec 29 Javascript
javascript json字符串到json对象转义问题
Jan 22 Javascript
vue请求数据的三种方式
Mar 04 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
第七节 类的静态成员 [7]
2006/10/09 PHP
discuz论坛 用户登录 后台程序代码
2008/11/27 PHP
PHP 正则表达式之正则处理函数小结(preg_match,preg_match_all,preg_replace,preg_split)
2012/10/05 PHP
对PHP新手的一些建议(PHP学习经验总结)
2014/08/20 PHP
laravel学习教程之存取器
2016/07/30 PHP
php unicode编码和字符串互转的方法
2020/08/12 PHP
PHP实现的链式队列结构示例
2017/09/15 PHP
Laravel学习教程之model validation的使用示例
2017/10/23 PHP
Ruffy javascript 学习笔记
2009/11/30 Javascript
Jquery.TreeView结合ASP.Net和数据库生成菜单导航条
2010/08/27 Javascript
解析img图片没找到onerror事件 Stack overflow at line: 0
2013/12/23 Javascript
用js闭包的方法实现多点标注冒泡示例
2014/05/29 Javascript
Node.js编写爬虫的基本思路及抓取百度图片的实例分享
2016/03/12 Javascript
js删除局部变量的实现方法
2016/06/25 Javascript
jQuery实现花式轮播之圣诞节礼物传送效果
2016/12/25 Javascript
Express+Nodejs 下的登录拦截实现代码
2017/07/01 NodeJs
vue实现移动端图片裁剪上传功能
2020/08/18 Javascript
Angular实现搜索框及价格上下限功能
2018/01/19 Javascript
echarts同一页面中四个图表切换的js数据交互方法示例
2018/07/03 Javascript
微信小程序常用赋值方法小结
2019/04/30 Javascript
vue自定义表单生成器form-create使用详解
2019/07/19 Javascript
详解nuxt 微信公众号支付遇到的问题与解决
2019/08/26 Javascript
Python学习笔记(二)基础语法
2014/06/06 Python
python通过正则查找微博@(at)用户的方法
2015/03/13 Python
低版本中Python除法运算小技巧
2015/04/05 Python
Python数据类型中的“冒号“[::]——分片与步长操作示例
2018/01/24 Python
Python中defaultdict与lambda表达式用法实例小结
2018/04/09 Python
python按时间排序目录下的文件实现方法
2018/10/17 Python
详解python实现交叉验证法与留出法
2019/07/11 Python
Python Django2.0集成Celery4.1教程
2019/11/19 Python
Django通用类视图实现忘记密码重置密码功能示例
2019/12/17 Python
美国网上书店:Barnes & Noble
2018/08/15 全球购物
美国一站式电动和手动工具商店:International Tool
2020/11/26 全球购物
证婚人搞笑证婚词
2014/01/10 职场文书
家庭教育的心得体会
2014/09/01 职场文书
关于清明节的演讲稿2015
2015/03/18 职场文书