KoaJS 是一个最小化和灵活的 NodeJS web 应用框架。它为构建 Web 和移动应用程序提供了一组很好的特性。在本文中,我们将通过创建一个小型应用程序来开始使用 KoaJS。
KoaJS 是一个开源框架,由非常流行的 ExpressJS 的创建者开发和维护。
然而,KoaJS 背后的设计理念与 Express 完全不同。Koa 提供了构建应用程序的最小接口。它是一个非常小的框架,提供了最基本的工具来构建应用程序和 REST API
路由是构建任何 Web 应用程序的重要方面。但是,KoaJS 不支持路由作为核心模块的一部分。因此,我们必须使用外部模块来启用路由。在本文中,我们将研究一个使用 Koa-Router 包的基本 Koa JS 路由器示例。
虽然静态路由可以解决大量的用例,但是应用程序也需要动态路由。动态路由帮助我们传递参数作为路由路径的一部分。在这篇文章中,我们还将学习如何使用示例处理 KoaJS 路由参数。
KoaJS 需要 Node 版本7或更高版本,这使它能够与 ES2015和异步函数支持一起工作。
要开始使用 KoaJS,我们可以简单地创建一个项目文件夹并执行以下命令
Shell
$ mkdir koa-app
$ cd koa-app
$ npm init -y
$ npm install --save koa
基本上,我们创建一个目录并初始化一个 npm 项目。
现在我们的项目已经准备就绪,我们可以创建第一个 KoaJS 应用程序了。
请看下面的例子:
JavaScript
const koa = require('koa');
const app = new koa();
app.use(async ctx => {
ctx.body = 'Hello, World';
});
app.listen(3000, function(){
console.log('Server running on https://localhost:3000')
});
KoaJS 应用程序是一个包含中间件函数数组的对象。根据请求,这些中间件函数以类似堆栈的方式组合和执行。
如您所见,我们有 app.use ()函数。基本上,这个函数是一个中间件。这个函数接受一个回调函数作为输入。此外,回调函数可以访问名为 ctx 的 Koa 应用程序上下文。基本上,我们可以使用这个上下文来访问和修改请求和响应对象。
一旦我们使用 node index.js 启动应用程序并访问 http://localhost:3000,我们将能够在浏览器中看到问候消息。
然而,与 ExpressJS 不同,Koa 没有内置的路由器处理能力。
假设您已经有了一个 KoaJS 应用程序,我们只需要安装另一个软件包就可以使用路由器了。
Shell
$ npm install koa-router
一旦软件包安装完成,我们就准备调整我们的应用程序以使用 koa-router 软件包。
让我们实现一个简单的 GET 路由示例
JavaScript
const koa = require('koa');
const Router = require('koa-router');
const app = new koa();
const router = new Router();
router.get('/greetings', (ctx, next) => {
ctx.body = "Hello, World from Router"
});
app.use(router.routes())
app.listen(3000, function(){
console.log('Server running on https://localhost:3000')
});
让我们了解一下上面的例子中发生了什么。
请注意,Koa Context 是一个特殊的对象,它将 NodeJS 的请求和响应对象封装到一个对象中。在 KoaJS 中,为每个请求创建一个上下文实例,并在中间件中作为接收方或 ctx 标识符引用。
如果我们此时启动应用程序并访问 http://localhost:3000/greetings ,我们将能够在浏览器中看到问候信息。
让我们创建一个简单的示例,演示 KoaJS 中的路由参数。
JavaScript
const koa = require('koa');
const Router = require('koa-router');
const app = new koa();
const router = new Router();
router.get('/books/:id', (ctx, next) => {
ctx.body = 'Book requested for id: ' + ctx.params.id
});
app.use(router.routes())
app.listen(3000, function(){
console.log('Server running on https://localhost:3000')
});
如您所见,我们在 router.get ()函数的路径中添加了: id。路由器功能是 KoaJS 路由器包的一部分。
基本上,: id 是路由参数的占位符。一旦我们定义了路由参数,我们就可以从 ctx.params 对象中检索参数的值。
如果我们启动上面的应用程序并访问 http://localhost:3000/books/5,我们得到的输出消息是“ Book request for id: 5”。
我们还可以在 id 字段中发送任何其他类型的值(比如字符串) ,甚至在 ctx.params 中也可以使用。
最后,在 KoaJS 中也可能有多个路由参数。
JavaScript
const koa = require('koa');
const Router = require('koa-router');
const app = new koa();
const router = new Router();
router.get('/books/:id', (ctx, next) => {
ctx.body = 'Book requested for id: ' + ctx.params.id
});
router.get('/books/:bookId/author/:authorId', (ctx, next) => {
ctx.body = {bookId: ctx.params.bookId, authorId: ctx.params.authorId}
});
app.use(router.routes())
app.listen(3000, function(){
console.log('Server running on https://localhost:3000')
});
例如,这里的第二个路由包含两个参数-bookId 和 authId。我们可以从 ctx.params 对象中检索这两个对象。
我们还可以使用正则表达式来限制 URL 参数匹配。
例如,如果我们的要求是 bookId 应该只有3位长的数字,我们可以使用 regex 如下:
JavaScript
router.get('/books/:id([0-9]{3})', (ctx, next) => {
ctx.body = 'Book requested for id: ' + ctx.params.id
});
请注意,这只有在 id 为3位数字时才会匹配。少于或多于此值都将导致 HTTP404错误代码。我们还可以使用不同的 HTTP 方法在 KoaJS 中构建复杂的 REST API。
这样,我们就成功地研究了 KoaJS 路由参数以及如何在我们的应用程序中处理它们。
基本上,路由参数使我们的应用程序路由动态和灵活。此外,我们可以在路由中使用多个参数,也可以使用 regex 执行模式匹配。
如果你对这篇文章有任何评论或疑问,请随时在下面的评论部分提及。
留言与评论(共有 0 条评论) “” |