js加载Markdown文件并解析

作者: yieldHL | 来源:发表于2016-12-01 14:25 被阅读7450次

    原因

    因为之前的项目都将.md文件放到了GitHub或者Coding上,这两个平台会有自动解析md文件的能力,但是最近突发奇想,想把这个Wiki也同步显示到我自己的后台上,于是搞了搞JS解析和PHP自动加载

    框架及使用到的插件

    Marked.js 解析MarkDown
    CDN地址:http://www.bootcdn.cn/marked/

    highlight.js 语法高亮(只需src目录就可以)
    地址:https://github.com/isagalaev/highlight.js

    ThinkPHP框架

    Bootstrap3.0

    使用详情

    引用 mark.js highlight.js default.css
    以自己的路径为准
    引用js
    有多种样式,请自行引用
    引用css
    实例化代码
    <script>
            hljs.initHighlightingOnLoad(); #实例化高亮
            $(document).ready(function(){
                $("#content").html(marked({$html})); #此处的$html代指json数据,详情看后面
            })
    </script>
    
    加载文件

    PHP代码

    protected $wikiMenu = "./Wiki/"; //错误日志所在目录
    
    public function indexAction(){
            $markdown = file_get_contents($this->wikiMenu."README.md"); #读取指定目录下的README.md文件
            $markdown = json_encode($markdown,JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT); #将获取到的内容转化成JSON
            $this->assign("html",$markdown); #传到前台
            $this->display();
    }
    
    public function _empty(){
            $markdown = file_get_contents($this->wikiMenu.ACTION_NAME.".md");
            $markdown = json_encode($markdown,JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT);
            $this->assign("html",$markdown);
            $this->display("Doc/index");
    }
    
    示例图 效果图

    这里遇到个问题,TABLE并没有被转换掉,修改方法如下:

    marked.js 第825行
    table添加一个class="table table-hover"

    修改图

    最终效果图:

    最终效果图

    相关文章

      网友评论

      • 3c9a691b4944:有没有出现换行符\无法解析的情况
        FeRookie:default.css是啥
        yieldHL:没有,之前就是遇到过这个问题,但是换做这个好像就解决掉了,有点久远,我也记不得了
      • 执刀书浩然:react 能用吗
        yieldHL:@执刀书浩然 react应该有插件的
      • 长空X:可以贴一下JSon数据的格式么?我的后端不是PHP,但是可以传递JSON数据到前台,不知道格式是什么样的
        yieldHL:JSON格式不重要,能把数据传到前端去就可以了
      • 0e6dba483503:你这Markdown样式真好看,可以分享吗?
        yieldHL:就是用了这3个JS,你可以搜一下:mark.js highlight.js default.css

      本文标题:js加载Markdown文件并解析

      本文链接:https://www.haomeiwen.com/subject/fimxmttx.html