zoukankan      html  css  js  c++  java
  • 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');
    }
  • 相关阅读:
    zookeeper
    消息中间件介绍
    Java实现动态代理的两种方式
    深入理解Java内存模型
    消息中间件(一)MQ详解及四大MQ比较
    synchronized关键字详解及分析锁升级过程
    JDK1.6的Synchronized底层优化(偏向锁、轻量级锁)
    分布式通信-tcp/ip socket
    技术点
    大众点评 cat
  • 原文地址:https://www.cnblogs.com/sumuzhe/p/7466329.html
Copyright © 2011-2022 走看看