node静态服务器

var url = require('url');
const express = require('express')
const path = require('path')
var fs = require('fs');

const app = express()

//多个app.use执行顺序:从上往下执行,找到request中url中文件之后,后续use不再执行,如果没有找到就一直往下执行知道找到为止。app.use被定义为中间件,app.get、app.post等其实都是app.use。
//express.static是托管静态资源,设定整个静态资源存放的位置(根目录),index.html中请求的css、js的路径将以express.static为根目录,在该目录下找。
// 例如app.use(express.static(path.resolve(__dirname,"./test"))) 那么index.html中的<link reef='/index.css' />请求的静态文件的真实的路径就是__dirname/test/index.css。__dirname指的是server.js文件所在的目录。根目录的确定必须以server.js文件所在的目录为基准。
app.use(express.static(path.resolve(__dirname,"./")))//url为index.html时先在第一个app.use中的express.static(path.resolve(__dirname,"./")目录下找,如果没有找到,就往下执行第二个app.use
app.use(function(req, res, next) {// 不加匹配路径的参数时会匹配到所有的前端路由
   // res.sendFile(path.resolve(__dirname, 'build/index.html'));
   console.log("ssss",url.parse(req.url).pathname)
   fs.readFile(path.resolve(__dirname, './index.html'), function(err, data){
       if(err){
           console.log(err);
           res.send('后台错误');
       } else {
           res.writeHead(200, {
               'Content-type': 'text/html',
               'Connection':'keep-alive'
           });
           res.end(data);
       }
   })
})

// app.use('/a', function(req, res, next) {
//    res.send('aaa');
// })

// app.use('/route', function(req, res, next) {// "/route"会匹配到route/ee/eee、route/xx等含有route的路由
//    // res.sendFile(path.resolve(__dirname, 'build/index.html'));
//    fs.readFile(path.resolve(__dirname, 'build/index.html'), function(err, data){
//        if(err){
//            console.log(err);
//            res.send('后台错误');
//        } else {
//            res.writeHead(200, {
//                'Content-type': 'text/html',
//                'Connection':'keep-alive'
//            });
//            res.end(data);
//        }
//    })
// })

app.listen(8080)

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值