# next作为koa的中间件

koa中间件机制可以看 深入理解 Koa2 中间件机制

# 安装koa 和 koa-router

yarn add koa koa-router
1

# 新建一个server.js

const Koa = require("koa")
const Router = require("koa-router")
const next = require("next")
const dev = process.env.NODE_ENV !== "production"
const app = next({ dev })
const handle = app.getRequestHandler()



app.prepare().then(() => {
    const server = new Koa();
    const router = new Router();


    server.use(router.routes())
    server.use(async (ctx, next) => {
        await handle(ctx.req, ctx.res);
        ctx.respond = false;
    })
    server.listen(3000, () => {
        console.log("koa serve 启动 3000")
    })
})
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

修改package.json中的 scripts 为:

"scripts": {
        "test": "echo \"Error: no test specified\" && exit 1",
        "dev": "node server.js",
        "mon": "nodemon server.js",
        "build": "next build",
    }
1
2
3
4
5
6

这样next就作为koa的中间件使用了,那么koa的强大功能,和next的同构功能我们就都可以使用了

执行 yarn dev显示页面同原来一样