nodejs搭建静态资源服务器

320 阅读2分钟

1.nodejs-静态资源 ( 1 )

  • 1.html中所有外部资源路径都会变成网络请求

    • 服务器需要根据请求路径响应返回对应的文件
  • 2.静态资源(图片、文件、音视频)一般使用路径拼接的方式来处理

    • 服务端可以直接拼接url来响应对应资源,简化代码
/*WEB开发特点1:html中所有外部资源路径都会变成网络请求
*/

//1.导入模块
//http模块
const http = require('http')
//fs文件模块
const fs = require('fs')
//path路径模块
const path = require('path')


//2.创建服务器
let server = http.createServer((req, res) => {
    console.log(req.url)

    if (req.url == '/') {
        //读取文件响应给客户端
        fs.readFile(path.join(__dirname, 'www',  'index.html'), (err, data) => {
            if (err) {
                throw err//如果读取失败,抛出异常
            } else {
                res.end(data)//如果读成功,响应给客户端
            }
        })
    } else if (req.url == '/resource/css/index.css') {
        //读取文件响应给客户端
        fs.readFile(path.join(__dirname, 'www','resource', 'css', 'index.css'), (err, data) => {
            if (err) {
                throw err//如果读取失败,抛出异常
            } else {
                res.end(data)//如果读成功,响应给客户端
            }
        })
    } else if (req.url == '/resource/images/01.gif') {
        //读取文件响应给客户端
        fs.readFile(path.join(__dirname, 'www','resource', 'images', '01.gif'), (err, data) => {
            if (err) {
                throw err//如果读取失败,抛出异常
            } else {
                res.end(data)//如果读成功,响应给客户端
            }
        })
    } else if (req.url == '/resource/images/01.jpg') {
        //读取文件响应给客户端
        fs.readFile(path.join(__dirname, 'www','resource', 'images', '01.jpg'), (err, data) => {
            if (err) {
                throw err//如果读取失败,抛出异常
            } else {
                res.end(data)//如果读成功,响应给客户端
            }
        })
    } else if (req.url == '/resource/video.mp4') {
        //读取文件响应给客户端
        fs.readFile(path.join(__dirname, 'www','resource', 'video.mp4'), (err, data) => {
            if (err) {
                throw err//如果读取失败,抛出异常
            } else {
                res.end(data)//如果读成功,响应给客户端
            }
        })
    } else if (req.url == '/resource/favicon.ico') {
        //读取文件响应给客户端
        fs.readFile(path.join(__dirname, 'www','resource', 'favicon.ico'), (err, data) => {
            if (err) {
                throw err//如果读取失败,抛出异常
            } else {
                res.end(data)//如果读成功,响应给客户端
            }
        })
    } else {
        res.end('404 not found')
    }
})

//3.开启服务器
server.listen(3000, () => {
    console.log('服务器启动成功')
})

2.nodejs-静态资源 ( 2 )

/*
WEB开发特点1:html中所有外部资源路径都会变成网络请求
WEB开发特点2:静态资源(图片、文件、音视频)一般使用路径拼接的方式来处理
*/

//1.导入模块
//http模块
const http = require('http')
//fs文件模块
const fs = require('fs')
//path路径模块
const path = require('path')


//2.创建服务器
let server = http.createServer((req,res)=>{
    console.log(req.url)
    
    if(req.url == '/'){
        //读取文件响应给客户端
        fs.readFile(path.join(__dirname,'www','index.html'),(err,data)=>{
            if(err){
                throw err;//如果读取失败,抛出异常
            }else{
                res.end(data);//如果读成功,响应给客户端
            }
        })
    }else if(req.url.indexOf('/resource') == 0){//只要路径以/resource开头,直接拼接返回
        //读取文件响应给客户端
        fs.readFile(path.join(__dirname,'www',req.url),(err,data)=>{
            if(err){
                throw err//如果读取失败,抛出异常
            }else{
                res.end(data)//如果读成功,响应给客户端
            }
        })
    }else{
        res.end('404 not found')
    };
});

//3.开启服务器
server.listen(3000,()=>{
    console.log('服务器启动成功')
})