koa2和express的.use()

Express中app.use()用法

app.use(path,callback)中的callback既可以是router对象又可以是函数
app.get(path,callback)中的callback只能是函数

当一个路由有好多个子路由时用app.use(path,router)

koa2中app.use()用法

koa2中的app.use()只能用于注册中间件并且必须是生成器函数,反过来说app.use是用来注册koa2中间件的不再像express中的use用来注册路由。

	//use 源代码
   if (typeof fn !== 'function') 
   throw new TypeError('middleware must be a function!');

use(fn)中的fn不论是完整的中间件还是生成器函数都被注册到this.middlware这个数组中,并通过convert(fn)这个方法进行了转换,转换成async/await语法

中间件执行的时候传入我们的ctx也就是我们常用的上下文,另一个参数next指向数组的下一个中间件,到执行结束为止


对比写法

app.get("/home",callback)
app.get("/home/one",callback)
app.get("/home/second",callback)
app.get("/home/three",callback)
var express = require('express')
var router = express.Router()
router.get("/",(req,res)=>{
    res.send("/")
})
router.get("/one",(req,res)=>{
    res.send("one")
})
router.get("/second",(req,res)=>{
    res.send("second")
})
router.get("/treen",(req,res)=>{
    res.send("treen")
})
module.exports = router;

app.js导入

var express = require('express')
var router = require("./router")
var app = express()

app.use('/home',router) //router路由对象中的路由都会匹配到"/home"路由后面
app.get('/about', function (req, res) {
  console.log(req.query)
  res.send('你好,我是 Express!')
})

// 4 .启动服务
app.listen(3000, function () {
  console.log('app is running at port 3000.')
})

app.use(express.static(‘public’));
为了提供对静态资源文件(图片,css,js文件)的服务,请使用Express内置的中间函数express.static.

传递一个包含静态资源的目录给express.static中间件用于立即开始提供文件。 比如用以下代码来提供public目录下的图片、css文件和js文件:
app.use(express.static(‘public’));

如果前台想请求后台public目录下images/08.jpg静态的图片资源
通过: http://localhost:3000/images/08.jpg

通过多次使用 express.static中间件来添加多个静态资源目录:

app.use(express.static('public'));
app.use(express.static('file'));

虚拟路径
为了给静态资源文件创建一个虚拟的文件前缀(文件系统中不存在),可以使用express.static函数指定一个虚拟的静态目录,如下:

app.use('/static', express.static('public'))

koa2中路由中间件注册

//route.js

var router = require('koa-router')
var r1 = router()


r1.get('/feedbacks/paramsQuery',async ctx=> {
    ctx.body = {
        code:1
    }
})

module.exports = r1



//www.js

var koa = require('koa')

let myporte = require('./node')

var app = new koa()

app.use(myporte.routes())

app.listen(3008,function() {
    console.log('3008 port监听成功')
})

对静态资源的处理koa也提供也中间件

const Koa = require('koa')
const path = require('path')
const static = require('koa-static')

const app = new Koa()

// 静态资源目录对于相对入口文件index.js的路径
const staticPath = './static'

app.use(static(
  path.join( __dirname,  staticPath)
))


app.use( async ( ctx ) => {
  ctx.body = 'hello world'
})

app.listen(3000, () => {
  console.log('[demo] static-use-middleware is starting at port 3000')
})

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值