gpt4 book ai didi

node.js - Expressjs 到 Koajs - 路由和模板?

转载 作者:太空宇宙 更新时间:2023-11-03 23:01:57 25 4
gpt4 key购买 nike

我希望将我的 Express 应用程序迁移到 Koa,但我不知道如何让路线和模板在 Koa 中工作。他们的官方网站上似乎有关于此的文档。

例如,这就是我在 Express 中的做法:

var express = require('express');
var app = express();

// respond with "Hello World!" on the homepage
app.get('/', function (req, res) {
res.send('Hello World!');
});

// accept POST request on the homepage
app.post('/', function (req, res) {
res.send('Got a POST request');
});

// accept PUT request at /user
app.put('/user', function (req, res) {
res.send('Got a PUT request at /user');
});

// accept DELETE request at /user
app.delete('/user', function (req, res) {
res.send('Got a DELETE request at /user');
})

那么这在 Koa 中是如何完成的呢?我从他们的文档中得到了什么:

const Koa = require('koa');
const app = new Koa();

app.use(async ctx => {
ctx.body = 'Hello World';
});

app.listen(3000);

另外,说到模板渲染,在 Express 中:

var express = require('express');
var router = express.Router();

router.get("/make", function(req, res) {

return res.render("streams/make", {...});
});

那么,这在 Koa 中是如何完成的呢?

有什么想法吗?

最佳答案

正如 Joe 已经提到的,Koa 没有预装任何中间件。

根据您的需求,您似乎想考虑使用 koa-routerkoa-views .

用法:

app.js

const Koa = require('koa')
const views = require('koa-views')
const router = require('./routes')

const app = new Koa()

app.use(views(`${__dirname}/views`, { extension: 'pug' })) // You can replace 'pug' with whatever templating engine you're using.
app.use(router.routes())
app.use(router.allowedMethods())

app.listen(3000)

module.exports = app

routes.js

const Router = require('koa-router')

const router = new Router()

router.get('/', async ctx => {
ctx.body = 'Hello World!'
})

// accept POST request on the homepage
router.post('/', async ctx => {
ctx.body = 'Got a POST request'
})

// accept PUT request at /user
router.put('/user', async ctx => {
ctx.body = 'Got a PUT request at /user'
})

// accept DELETE request at /user
router.delete('/user', async ctx => {
ctx.body = 'Got a DELETE request at /user'
})

// Render a template
router.get("/make", async ctx => {
await ctx.render("streams/make", { ... });
})

module.exports = router

使用 Koa,您只需获取一个 ctx,而不是获取 reqres 作为参数。使用此 ctx 对象,您可以通过 ctx.request 访问请求,并通过 ctx.response 访问响应。 ctx.body 只是 ctx.response.body 的别名。 Koa 为你定义了很多别名,你可以阅读 here .

关于node.js - Expressjs 到 Koajs - 路由和模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45632214/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com