美文网首页JavaScript 进阶营
制作‘简书’—把md文档转化为HTML文档

制作‘简书’—把md文档转化为HTML文档

作者: wuyadream | 来源:发表于2017-09-26 17:53 被阅读0次

    简书md文档在线转化成html文档的能力一直是简书的一大特色,我也来试试如何制作一个只有核心功能(md转化为HTML)的“简书”

    效果图

    img_1.png

    标题没有认真调整格式,但是其他部分看起来是不是和简书超级像呢?感兴趣的话就一起来和我完成属于自己的“简书吧”。

    实现

    实现原理是采用node.js搭建服务器,读取md文件转化为html片断。浏览器发送ajax请求获取片段后再渲染生成html网页。原理其实很简单呢,对不?准备好就开始动手吧。

    搭建node.js服务器

    var express = require('express');
    var http = require('http');
    var fs = require('fs');
    var bodyParser = require('body-parser');
    var marked = require('marked');    // 将md转化为html的js包
    var app = express();
    
    app.use(express.static('src'));  //加载静态文件
    
    var urlencodedParser = bodyParser.urlencoded({ extended: false });
    
    app.get('/getMdFile',urlencodedParser, function(req, res) {
    
        var data = fs.readFileSync('src/test.md', 'utf-8');    //读取本地的md文件
        res.end(JSON.stringify({
            body : marked(data)
        }));
    } );
    
    //启动端口监听
    var server = app.listen(8088, function () {
    
        var host = server.address().address;
        var port = server.address().port;
    
        console.log("应用实例,访问地址为 http://%s:%s", host, port)
    });
    

    安装好依赖包,服务器就可以愉快地跑起来了~

    HTML结构

    重要的就是发送请求获取数据啦,把取到的数据填充到div中即可。

    <div id="content">
        <h1 class="title">md-to-HTML web app</h1>
        <div id="article">
        </div>
    </div>
    <script type="text/javascript" src="js/jquery-1.11.3.min.js"></script>
    <script>
        var article = document.getElementById('article');
        $.ajax({
            url: "/getMdFile", success: function(result) {  
                console.log('数据获取成功');
                article.innerHTML = JSON.parse(result).body;
            }, error: function (err) {
                console.log(err);
                article.innerHTML = '<p>获取数据失败</p>';
            }
        });
    </script>
    

    再根据简书的样式添加上CSS样式,一个小小的“简书”就实现了。
    有兴趣的童鞋可以去github上下载源码,飞机票

    相关文章

      网友评论

        本文标题:制作‘简书’—把md文档转化为HTML文档

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