express和Koa

express和Koa的异同

1、安装:

express:npm install express -g
Koa: npm install -g koa-generator

2、创建项目:

快速创建 package.json: npm init -y

express:

第一步初始化包:npm init -y

第二步安装express:npm install express --save

Koa:

第一步初始化包:npm init -y

第二步安装Koa:npm install --save koa

3、创建路由:

express:

const express = require('express')
//创建express实例
const app = express()
//创建路由 http://127.0.0.1/index
app.get('/index', (req, res) => {
    res.send('Hello World!')
})

//http://127.0.0.1/info/2
app.post('/info/:id', function (req, res) {
    console.log(req.params);//{ id: '2' }
    res.send(`输入的参数为${req.params.id}`);//输入的参数为2
})
//启动路由在 http://127.0.0.1
app.listen(80, () => {
    console.log('http://127.0.0.1')
})

Koa:

//安装路由 npm install --save koa-router
//引入 Koa 
const Koa = require('koa');
//引入路由
const router = require('koa-router')();
//创建koa实例
const app = new Koa();

//http://localhost:3000/
router.get('/',  async(ctx, next)=> { 
 ctx.body = "Hello koa"; 
})

//http://localhost:3000/news
router.get('/news', async(ctx, next) => {
 ctx.body = "新闻 page"
});

//http://localhost:3000/news/2
router.post('/news/:id', async(ctx, next) => {
 console.log(ctx.params);  //{ id: '2' }
 ctx.body = `新闻 pagePOST,输入的参数为${ctx.params.id}`;
});

//启动路由
app.use(router.routes());
//可以设置不同的 response 响应头 (官方推荐,也可省略)
app.use(router.allowedMethods());
app.listen(3000, () => {
 console.log('starting at port http://localhost:3000/');
});

3、中间件执行顺序:

express执行顺序:

const express = require('express')
//创建express实例
const app = express()
//创建路由 http://127.0.0.1/index
app.get('/index', (req, res,next) => {
 console.log('111')
 res.send('Hello World!')
 next()
 console.log('22')
})

//http://127.0.0.1/info/2
app.post('/info/:id', function (req, res,next) {
 console.log('33')
 res.send(`输入的参数为${req.params.id}`);//输入的参数为2
 next()
 console.log('44')
})
//启动路由在 http://127.0.0.1
app.listen(80, () => {
 console.log('http://127.0.0.1')
})
express.png
express中间件执行顺序

Koa执行顺序:

const Koa=require('koa');
const router = require('koa-router')();  /*引入是实例化路由** 推荐*/
const app=new Koa();
//匹配任何路由  ,如果不写next,这个路由被匹配到了就不会继续向下匹配
app.use(async (ctx,next)=>{
 console.log('1、这是第一个中间件01');
 await next();
 console.log('5、匹配路由完成以后又会返回来执行中间件');
})

app.use(async (ctx,next)=>{
 console.log('2、这是第二个中间件02');
 await next();
 console.log('4、匹配路由完成以后又会返回来执行中间件');
})
//http://localhost:3000/
router.get('/',async (ctx)=>{
 ctx.body="首页";
})
//http://localhost:3000/news
router.get('/news',async (ctx)=>{
 console.log('3、匹配到了news这个路由');
 ctx.body='这是一个新闻';
})
app.use(router.routes());   /*启动路由*/
app.use(router.allowedMethods());
app.listen(3000, () => {
 console.log('starting at port http://localhost:3000/');
});
koa.png
koa洋葱圈
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。