04-模拟Apache服务器

// 加载 http 模块
var http = require('http');
var path = require('path');
var fs = require('fs');
var mime = require('mime');


// 创建服务
http.createServer(function (req, res) {
  // 1. 获取用户请求的路径
  // req.url
  // /css/index.css
  // /images/index.png


  // 2. 获取 public 目录的完整路径
  var publicDir = path.join(__dirname, 'public');

  // 3. 根据 public 的路径 和用户请求的路径,最终计算出用户请求的静态资源的完整路径
  var filename = path.join(publicDir, req.url);
  // console.log(filename);

  // 4. 根据文件的完整路径去读取该文件,如果读取到了,则把文件返回给用户,如果读取不到,则返回 404
  fs.readFile(filename, function (err, data) {
    // body...
    if (err) {
      res.end('文件不存在 404');
    } else {

      // 通过第三方模块 mime,来判断不同的资源对应的 Content-Type 的类型
      res.setHeader('Content-Type', mime.getType(filename));
      // 如果找到了用户要读取的文件,那么直接把该文件返回给用户
      res.end(data);
    }
  });
  // res.end('over');


}).listen(9090, function () {
  console.log('http://localhost:9090');
});
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值