美文网首页
Day3 静态服务器

Day3 静态服务器

作者: Hathaway_桉 | 来源:发表于2017-06-07 10:26 被阅读0次

    阮一峰最新教程:
    http://javascript.ruanyifeng.com/nodejs/basic.html
    阮一峰教程:
    http://www.ruanyifeng.com/blog/2015/05/command-line-with-node.html
    使用终端Git Bash来进入管理Node。
    npm是随处可见的Node开发包管理器(用它获取并安装Express)。包管理器的两个主要职责是安装开发包和管理依赖项。

    图片.png
    • <h1>编写静态资源服务:
    var http=require("http");
    var fs=require('fs');
    function serverStaticFile(res,path,contentType,responseCode){
        if(!responseCode)responseCode=200;
        fs.readFile(_dirname+path,function(err,data){
            if(err){
                res.writeHead(500,{'content-Type':"text/plain"});
                res.end("500-Internal Error");
            }else{
                res.writeHead(responseCode,{'content-Type':"contentType"});
                res.end(data);
            }
        });
    }
    http.createServer(function(req,res){
        var path=req.url.replace(/\/?(?:\?.*)?$/,'').toLowerCase();
        switch(path){
            case'':
                serverStaticFile(res,'/public/home.html','text/html');
                break;
            case'/about':
                serverStaticFile(res,'/public/img/logo.jpg','image/jpg');
                break;
            case'/img/logo.jpg':
                serverStaticFile(res,'/public/404.html','text/html',404);
                break;
        }
    }).listen(3000);
    console.log('server started on localhost:3000');
    
    • <h1>Node.js REPL交互式解释器


      图片.png
    • <h1>Node.js回调函数


      图片.png

    举例说明:
    http://www.runoob.com/nodejs/nodejs-callback.html

    <b>阻塞代码:</b>

    var fs=require("fs");
    var data=fs.readFileSync("input.txt");
    console.log(data.toString());
    console.log("程序执行结束!");
    

    <b>非阻塞代码</b>

    var fs=require("fs");
    fs.readFile('input.txt',function(err,data){
        if(err)return console.error(err);
        else console.log(data.toString());
    });
    console.log('程序执行结束!');
    

    </br>

    • <h1>Node.js事件驱动:

    ]在基于线程的方式中(thread-based way)你到了柜台前,把你的点餐单给收银员或者给收银员直接点餐,然后等在那直到你要的食物准备好给你。收银员不能接待下一个人,除非你拿到食物离开。想接待更多的客户,容易!加更多的收银员!

    当然,我们知道快餐店其实不是这样工作的。他们其实就是基于事件驱动方式,这样收银员更高效。只要你把点餐单给收银员,某个人已经开始准备你的食物,而同时收银员在进行收款,当你付完钱,你就站在一边而收银员已经开始接待下一个客户。在一些餐馆,甚至会给你一个号码,如果你的食物准备好了,就呼叫你的号码让你去柜台取。关键的一点是,你没有阻塞下一个客户的订餐请求。,<b>你订餐的食物做好的事件会导致某个人做某个动作(某个服务员喊你的订单号码,你听到你的号码被喊到去取食物),在编程领域,我们称这个为回调(callback function)。</b>


    图片.png 图片.png

    事件驱动模式的经典举例:

    http://www.cnblogs.com/lua5/archive/2011/02/01/1948760.html

    相关文章

      网友评论

          本文标题:Day3 静态服务器

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