Static Server(静态服务器)

以往我们写 server.js 时,用 if 来判断请求文件然后响应如果网页有几十个的话还用 if 那也得写几十个 if ,优化一下代码改成自动查找对应文件,既静态文件服务器

响应代码

response.statusCode = 202

const filePath =path === '/'?'index.html':path

//得到文件后缀
const index = filePath.lastIndexOf('.')
const suffix = filePath.substring(index)
const fileTypes = {
  '.html':'test/html',
  '.css':'test/css',
  '.js':'test/javascript',
  '.png':'image/png',
  '.jpg':'image/jpeg'
}

//设置头部文件的后缀
response.setHeader('Content-Type',`${fileTypes[suffix]||'test/html'}`;charset="utf-8")

let content

//读文件如果失败状态码为404
try{
  content = fs.readFileSync(`./public${filePath}`)
}catch(error){
  content = "文件不存在"
  response.statusCode = 404
}
//写入
response.write(content)
response.end()

//String.prototype.lastIndexOf():方法返回调用string对象的指定值最后一次出现的索引,
//String.prototype.substring():方法返回一个字符串在开始索引到结束索引之间的一个子集,或从开始索引
//直到字符串的末尾的一个子集
//try...catch:语句标记要尝试的语句块,并指定一个出现异常时抛出响应

实例

源代码该代码实现请求 html css js png 等文件