我正在使用Vue创建一个简单的博客平台,该平台为帖子提供Markdown(* .md)文件。在主页上,我想显示已发布帖子的列表以及每个帖子中前30个单词的预览。到目前为止,这是我要显示的功能(front-matter
仅解析出文件顶部的一些元数据,而postData
仅包含Markdown文件中的文本):
import fm from "front-matter";
function postPreview() {
var fmData = fm(postData).body;
var words = fmData.split(" ");
return words.slice(0, 30).join(" ");
}
问题是,如果Markdown具有图像标签或链接标签,那么当我只想显示原始文本时,它会显示图像标签或链接标签。例如,如果这是我的Markdown文件:
![alt-text...](link-to-some-picture) Here is a [link](link-to-some-website) in my file.
然后预览应如下所示:
Here is a link in my file.
有没有可以让我做到这一点的图书馆?
答案 0 :(得分:1)
也许有更直接的方法,但是这里有些东西似乎起作用。
https://github.com/showdownjs/showdown
这是对HTML脚本的有效标记,然后使用jQuery从隐藏的元素中提取text()。
function Markdown2HTML(sInput){
var converter = new showdown.Converter();
var html = converter.makeHtml(sInput);
return html ;
}
function fnProcess() {
var sMarkDown = $("#myInput").val();
var sHTML = Markdown2HTML(sMarkDown);
$("#resultTemp").html(sHTML);
$("#resultArea").html($("#resultTemp").text());
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/showdown/1.9.0/showdown.min.js"></script>
<button onclick="fnProcess()">process</button>
<input id="myInput" style="width:500px;" type="text" value="![alt-text...](link-to-some-picture) Here is a [link](link-to-some-website) in my file." />
<div id="resultArea" style="padding:10px;"></div>
<div id="resultTemp" style="display:none"></div>