1. 程式人生 > 程式設計 >JS載入解析Markdown文件過程詳解

JS載入解析Markdown文件過程詳解

網上有很多網站會通過.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文件。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。