Node访问服务器端静态资源

Posted 遥岑.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Node访问服务器端静态资源相关的知识,希望对你有一定的参考价值。

通过Node访问服务器端静态资源

通过Node的http模块访问服务器端的静态资源(css文件、图像、html文件)。

  • 获取客户端请求的url地址
//获取用户请求路径
console.log(req.url)
  • 找到url对应的资源文件,利用fs模块读取文件的内容
  • 将文件内容发送给客户端
if(req.url === '/index' || req.url ==='/') {
    //读到的就是Buffer型数据
    fs.readFile(path.join(__dirname,'index.html'),function (err,data) {
        if(err) {
            throw err
        }
        res.end(data)
    })
}else {
    res.end('404')
}
//根据不同请求 做出不同响应(HTML文件)

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

http.createServer(function (req,res) {
    // res.setHeader('Content-Type','text/html;charset = utf-8')

    if(req.url === '/index' || req.url ==='/') {
        //读到的就是Buffer型数据
        fs.readFile(path.join(__dirname,'index.html'),function (err,data) {
            if(err) {
                throw err
            }
            res.end(data)
        })
    }else {
        res.end('404')
    }

}).listen(8080,function () {
    console.log('服务器启动')
})

mime.getType(url)可以通过路径返回资源类型

var http = require('http')
var path = require('path')
var fs = require('fs')
var mime = require('mime')

http.createServer(function (req,res) {
    //获取images下的路径
    var imagesDir = path.join(__dirname,'images')
    // console.log(imagesDir)

    //计算用户请求的完整路径
    var filename = path.join(imagesDir,req.url)
    console.log(filename)

    //读文件
    fs.readFile(filename,function (err,data) {
        if(err) {
            res.setHeader('Content-Type','text/plain;charset=utf-8')
            res.end('未找到文件')
        } else {
            console.log(filename)
            //mime自动匹配文件类型
            res.setHeader('Content-Type',mime.getType(filename))
            res.end(data)
        }
    })

}).listen(8080,function () {
    console.log('服务器启动')
})

res的常用属性

  • 设置响应报文头
res.setHeader('Content-Type','text/plain;charset=utf-8')
  • 设置http状态码
res.statusCode = 404     
res.statusMessage = 'Not Found'
  • 写入http响应报文头
res.writeHead(200,'OK',{
   'Content-Type':'text/plain;charset=utf-8'
})
  • 响应的报文头报文体已经响应完毕
res.end('end')
//res常用属性
var http = require('http')

http.createServer(function (req,res) {
    //设置响应报文头
    // res.setHeader('Content-Type','text/plain;charset=utf-8')

    //设置http状态码
    // res.statusCode = 404
    // res.statusMessage = 'Not Found'

    //直接向客户端响应(写入)http响应报文头 可代替上面的
    res.writeHead(200,'OK',{
        'Content-Type':'text/plain;charset=utf-8'
    })

    //res.write()
    res.write('hello 你好')

    //告诉服务器该响应的报文头报文体已经响应完毕,可以考虑本次响应结束
    res.end('end')
}).listen(8080,function () {
    console.log('服务器启动')
})

req的常用属性

  • 获取所有的请求报文头,返回的是一个对象
console.log(req.headers)
  • 获取请求报文头,返回的是一个数组
console.log(req.rawHeaders)
  • 获取请求客户端所使用的http版本
console.log(req.httpVersion)
  • 获取客户端请求的方法
console.log(req.method)
  • 获取请求的路径
console.log(req.url)
//req常用属性
var http = require('http')

http.createServer(function (req,res) {
    //获取所有的请求报文头 返回的是一个对象
    // console.log(req.headers)

    //返回一个数组,数组中保存的是请求报文头的字符串
    // console.log(req.rawHeaders)

    //httpVersion获取请求客户端所使用的http版本
    // console.log(req.httpVersion)

    //获取客户端请求的方法
    // console.log(req.method)

    //获取请求的路径
    console.log(req.url)

    res.end('end')
}).listen(8080,function () {
    console.log('服务器启动')
})

以上是关于Node访问服务器端静态资源的主要内容,如果未能解决你的问题,请参考以下文章

Go后端服务器(访问html中的静态资源)

Go后端服务器(访问html中的静态资源)

Go后端服务器(访问html中的静态资源)

nginx 在前端中的简单应用

简述react.js+node.js+mysql应用架构

通过nginx服务器访问静态资源