Deno的Express.js是什么?

386 阅读2分钟

随着第一批采用者对Deno的修补,许多人正试图找出与他们习惯的node相类似的工具。如果你正在寻找一个像expression.js那样的轻量级网络应用程序框架,你可能想探索一下oak

注意:这篇文章中的许多例子都来自于github的文档!

什么是Oak?

Oak被自我描述为 "Deno的http服务器的中间件框架,包括一个路由器中间件"。

说白了,Oak实际上与用于node的koa比Express.js更相似,但Express的用户应该对Oak非常熟悉。

用Oak创建一个Hello World应用程序

为了用Oak在deno中创建一个 "Hello World!"应用程序,我们从Oak模块中导入Application 。你创建一个新的应用实例,为所有请求添加一个处理程序,将响应体设置为"Hello World!" ,然后监听一个端口。

请确保在你的导入语句中确定 oak 的版本。这里它被固定为4.0.0版本。

import { Application } from 'https://deno.land/x/oak@v4.0.0/mod.ts';

const app = new Application();

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

await app.listen({ port: 8000 });

现在,如果你浏览http://localhost:8000 ,你应该看到我们的Hello world! 信息!

添加路由器

Oak也包括一个路由器!只需导入Router ,创建一个新的实例,指定你的路由,然后确保将其作为中间件添加到你的应用程序。

import { Application, Router } from 'https://deno.land/x/oak/mod.ts';

const books = new Map<string, any>();
books.set('1', {
  id: '1',
  title: 'The Hound of the Baskervilles',
  author: 'Conan Doyle, Author',
});

const router = new Router();
router
  .get('/', (context) => {
    context.response.body = 'Hello world!';
  })
  .get('/book', (context) => {
    context.response.body = Array.from(books.values());
  })
  .get('/book/:id', (context) => {
    if (context.params && context.params.id && books.has(context.params.id)) {
      context.response.body = books.get(context.params.id);
    }
  });

const app = new Application();
app.use(router.routes());
app.use(router.allowedMethods());

await app.listen({ port: 8000 });

请注意有用的router.allowedMethods() 中间件,它将让客户知道什么时候不允许使用某个路由!

开始吧!

希望这能让你开始工作!oak中还有更多的功能,但现在你已经知道了persue的解决方案,并且有了基本的入门知识,你应该能够从这里开始。