node.js处理静态资源请求

http_server.js部分

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

const myserver = http.createServer()
myserver.listen(3000, function() {
    console.log('服务器启动成功!服务器的地址是http://localhost:3000')
})
myserver.on('request', function(req, res) {
    //req.url用于在服务器上获取浏览器发送过来的请求地址
    console.log(req.url)
    // 用户请求服务器的根地址,就向浏览器发送index.html网页代码
    if(req.url == '/') {
        const filename = path.join(__dirname, 'index.html')
        fs.readFile(filename, 'utf-8', function(error, data) {
            if(error != null) {
                console.log('网页文件读取失败!')
                res.write('<h1>网页不存在(500错误)</h1>')
                res.end()
            }
            else {
                res.write(data)
                res.end()
            }
        })
    }
    // 如果index.html中的img标签向服务器的/css/style.css地址发送了请求,就向浏览器发送css文件
    else if(req.url=='/css/style.css') {
        const filename2 = path.join(__dirname,'css','style.css')
        fs.readFile(filename2,'utf-8',function(error,data) {
            if(error != null) {
                console.log('css文件读取失败!');
            }
            else {
                res.write(data)
                res.end()
            }
        })
    }
    // 如果index.html中的img标签向服务器的/imgs/logo.jpg地址发送请求,就向浏览器发送图片文件
    else if(req.url == '/imgs/logo.jpg') {
        const filename2 = path.join(__dirname, 'imgs', 'logo.jpg')
        fs.readFile(filename2, function(error, data) {
            if(error != null) {
                console.log('图片读取失败!')
            }
            else {
                res.write(data)
                res.end()
            }
        })
    }
    else {
        res.end()
    }
})
index.html部分

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1 style="color:red;">首页</h1>
    <!-- 注意:当浏览器接收该html文件后,会根据img标签的src属性值向服务器发送第二次请求 -->
    <img src="imgs/logo.jpg">
</body>
</html>
css部分 style.css

body {
    background: lightblue
}

h1 {
    color:red;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值