封装一个简易的express,实现简单路由

const http = require('http')
const url = require('url')
let router = []
class Application {
  get (path, handler) {
    router.push({
      path,
      method: 'get',
      handler
    })
  }
  listen () {
    http.createServer((req,res) => {
      let {pathname} = url.parse(req.url, true)
      for (const route of router) {
        if (route.path === pathname) {
          route.handler(req,res)
          return
        }
      }
    }).listen(...arguments)
  }
}

module.exports = function (config) {
  return new Application()
}

使用它:

const keexpress = require('./08-keexpress')
const fs = require('fs')
const path = require('path')

const app = keexpress()

app.get('/', (req,res) => {
  fs.readFile(path.resolve('./index.html'),(err, data) => {
    if (err) {
      res.statusCode = 500
      res.end('500 - Internal Server Error!')
      return
    }
    res.statusCode = 200
    res.setHeader('content-Type','text/html')
    res.end(data)
  })
})
app.get('/users', (req,res) => {
  res.statusCode = 200
  res.setHeader('content-Type', 'application/json')
  res.end(JSON.stringify([{name: 'keven', age: 20}]))
})
app.listen(3001)

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值