• Node.js 用回调处理一次性事件


    为了在程序中演示回调的用法,我们来做一个简单的HTTP服务器,让它实现如下功能:

    • 异步获取存放在JSON文件中的文章的标题;
    • 异步获取简单的HTML模板;
    • 把那些标题组装到HTML页面里;
    • 把HTML页面发送给用户。

    最终结果如下所示:

    一个包含文章标签的列表:titles.json:

    [
        "Kazakhstan is a huge country... what goes on there?",
        "This weather is making me craaazy",
        "My neighbor sort of howls at night"
    ]

    用来渲染博客标题的HTML模板:template.html:

    <!doctype html>
    <html>
        <head></head>
        <body>
            <h1>Latest Posts</h1>
            <ul><li>%</li></ul>
        </body>
    </html>

    运行程序:

    var http    = require('http');
    var fs      = require('fs');
    
    var server = http.createServer(function (req, res) {
        getTitles(res);
    }).listen(8000, "127.0.0.1");
    
    function getTitles(res) {
        fs.readFile('./titles.json', function (err, data) {
            if (err) return hadError(err, res);
            getTemplate(JSON.parse(data.toString()), res);
        });
    }
    
    function getTemplate(titles, res) {
        fs.readFile('./template.html', function (err, data) {
            if (err) return hadError(err, res);
            formatHtml(titles, data.toString(), res);
        });
    }
    
    function formatHtml(titles, tmpl, res) {
        var html = tmpl.replace('%', titles.join('</li><li>'));
        res.writeHead(200, {'Content-Type': 'text/html'});
        res.end(html);
    }
    
    function hadError(err, res) {
        console.log(err);
        res.end('Server Error');
    }
  • 相关阅读:
    vue中的watch
    css渲染层次理解及实际问题
    css中一些设计总结
    python打包文件(nuitka)
    vue实现前后端文件的上传和下载
    pyqt5使用多线程避免程序假死
    使用python编写shell脚本并运行
    记录一下WordNet多线程下的bug
    利用多线程对大数组进行处理
    nginx配置静态文件
  • 原文地址:https://www.cnblogs.com/sumuzhe/p/7466329.html
Copyright © 2020-2023  润新知