读<了不起的Node.js>-12.Connect- 先行搁置

2018-08-07  本文已影响0人  在路上的海贼

connect

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>website</h1>
<img src="images/1-1.jpg">
<img src="images/1-2.jpg">
<img src="images/1-3.jpg">
<img src="images/1-4.jpg">
</body>
</html>

使用http构建

const http = require('http');
const fs = require('fs');


/**
 * 创建服务器
 */

let server = http.createServer(function (req, res) {
    //检查请求方法并且url以images开始,.jap结束
    if ('GET' === req.method && '/images' === req.url.substr(0, 7) && '.jpg' === req.url.substr(-4)) {
        //用stat检查文件是否存在,这里使用__dirname来获取当前服务器所在路径
        //这里不用同步的fs.stat(statSync)否则处理磁盘文件时,会阻塞其他的请求处理
        fs.stat(__dirname + req.url, function (err, stat) {
            if (err || !stat.isFile()) {
                res.writeHeader(404);
                res.end('没找到东西');
                return
            }
            serve(__dirname+req.url,'application/jpg')
        });
    //    如果是'/'响应index.html 并调用serve函数
    }else if('GET'===req.method && '/' === req.url){
        serve(__dirname + '/index.html', 'text/html');
    //    啥都不是响应404结果
    } else{
        res.writeHeader(404);
        res.end("啥都没有,走开")
    }

    function serve(path,type){
        res.writeHeader(200,{'Content-Type': type});
        fs.createReadStream(path).pipe(res);
    }
});




/**
 * 监听
 */
server.listen(3000);

通过Content来实现

创建模块

const connect = require('connect');

const app = connect();

app.use(function (req, res) {
    
    res.end('hello world')
});

app.listen(3000);

上一篇 下一篇

猜你喜欢

热点阅读