node-server:实现一个能处理路由,支持静态目录的 se

2019-08-21  本文已影响0人  PingerL

node-server

实现一个能处理路由,支持静态目录的 server

1. 简单创建一个静态服务器

2. 实现处理路由,支持静态目录的 server

var http = require('http')  //引入http模块,用来创建一个服务器
var path = require('path') //引入path模块,用来处理文件路径
var fs = require('fs')     //引入文件系统模块,用来读写文件,读写数据
var url = require('url')   //用来自动解析url,得到一个与url信息相关的对象

function staticRoot(staticPath,req,res){
  var pathObj = url.parse(req.url,true) //获取请求的地址
  //设置默认打开的文件为test.html,这也是网站明明没有请求test.html,却打开了的原因
  if(pathObj.pathname === '/'){
    pathObj.pathname += 'test.html'
  }
  var filePath = path.join(staticPath,pathObj.pathname) //用于连接路径,得到所请求文件的具体路径
  
  //异步读取文件内容
  fs.readFile(filePath,'binary',function(err,fileContent){
    // 文件读取错误时展现的内容
    if(err){
      res.writeHead(404,'not found')
      res.end('<h1>404 not found</h1>')
    } else {
      //文件正确读取时显示请求的页面内容
      res.writeHead(200,'ok')
      res.write(fileContent,'binary')
      res.end()
    }
  })

}

// 使用 http.createServer() 方法创建服务器
var server = http.createServer(function(req,res){
  staticRoot(path.join(__dirname,'simple'),req,res) //__dirname 表示当前执行脚本所在的目录
})
// 使用 listen 方法绑定 8080 端口
server.listen(8080)
上一篇下一篇

猜你喜欢

热点阅读