Deno 是一个基于 TypeScript 的运行时环境,它的目标是成为一个安全的、稳定的、可靠的 JavaScript/TypeScript 运行时环境。与 Node.js 不同的是,Deno 不使用 npm,而是直接从 URL 加载模块,让开发者更加容易地管理依赖关系。在本篇文章中,我们将学习如何使用 Deno 框架,从零开始搭建一个 Web 应用。
安装 Deno
首先,我们需要安装 Deno。在 Windows 系统上,我们可以使用 PowerShell 执行以下命令:
iwr https://deno.land/x/install/install.ps1 -useb | iex
在 Mac 或 Linux 系统上,我们可以使用 Shell 执行以下命令:
curl -fsSL https://deno.land/x/install/install.sh | sh
安装完成后,我们可以在命令行中输入 deno
命令来验证是否安装成功。
创建一个简单的 Web 应用
我们将创建一个简单的 Web 应用,该应用将响应 HTTP 请求并返回一条消息。首先,我们需要创建一个名为 app.ts
的文件,该文件将包含我们的 Web 应用代码。
import { serve } from "https://deno.land/std/http/server.ts"; const server = serve({ port: 8000 }); console.log("http://localhost:8000/"); for await (const req of server) { req.respond({ body: "Hello, Deno!" }); }
在上面的代码中,我们导入了 serve
函数,该函数来自标准库中的 http/server.ts
模块。我们使用 serve
函数创建了一个 HTTP 服务器,并将其绑定到本地的 8000 端口。然后,我们使用 console.log
输出了一个消息,以便在控制台中查看服务器地址。最后,我们使用 for await
循环来处理所有的 HTTP 请求,并向客户端发送一条消息。
现在,我们可以在命令行中执行以下命令来启动我们的应用:
deno run --allow-net app.ts
在上面的命令中,--allow-net
参数是必需的,因为我们的应用需要访问网络。启动应用后,我们可以在浏览器中访问 http://localhost:8000/
来测试应用是否正常工作。
使用 Oak 框架
虽然我们可以直接使用标准库中的 http/server.ts
模块来创建一个 Web 应用,但是这样做可能会让我们的代码变得冗长和难以维护。因此,我们可以使用第三方框架来简化我们的代码。在 Deno 中,最流行的 Web 框架之一是 Oak。Oak 是一个基于中间件的框架,它提供了一些方便的功能,例如路由、错误处理和静态文件服务。
首先,我们需要安装 Oak 框架。我们可以使用以下命令来安装:
deno install --allow-read --allow-net https://deno.land/x/oak/mod.ts
在上面的命令中,--allow-read
和 --allow-net
参数是必需的,因为 Oak 框架需要读取文件和访问网络。
然后,我们可以使用以下代码来创建一个基本的 Oak 应用:
// javascriptcn.com 代码示例 import { Application } from "https://deno.land/x/oak/mod.ts"; const app = new Application(); app.use((ctx) => { ctx.response.body = "Hello, Oak!"; }); await app.listen({ port: 8000 });
在上面的代码中,我们导入了 Application
类,该类来自 Oak 框架中的 mod.ts
模块。我们使用 new
关键字创建了一个应用对象,并使用 app.use
方法添加了一个中间件函数。在该函数中,我们将响应消息设置为 "Hello, Oak!"。最后,我们使用 app.listen
方法来启动应用并将其绑定到本地的 8000 端口。
现在,我们可以在命令行中执行以下命令来启动我们的应用:
deno run --allow-net app.ts
在 Oak 应用中,我们可以使用更多的中间件来实现更复杂的功能。例如,我们可以使用 router
中间件来定义路由:
// javascriptcn.com 代码示例 import { Application, Router } from "https://deno.land/x/oak/mod.ts"; const app = new Application(); const router = new Router(); router.get("/", (ctx) => { ctx.response.body = "Hello, Oak!"; }); router.get("/hello/:name", (ctx) => { const { name } = ctx.params; ctx.response.body = `Hello, ${name}!`; }); app.use(router.routes()); app.use(router.allowedMethods()); await app.listen({ port: 8000 });
在上面的代码中,我们使用 new
关键字创建了一个路由对象,并使用 router.get
方法定义了两个路由。在第一个路由中,我们将响应消息设置为 "Hello, Oak!"。在第二个路由中,我们使用 ctx.params
对象获取了路由参数,并将响应消息设置为 "Hello, {name}!"。最后,我们使用 app.use
方法将路由中间件添加到应用中。
总结
在本文中,我们学习了如何使用 Deno 框架和 Oak 框架来创建一个 Web 应用。我们从创建一个简单的 HTTP 服务器开始,然后学习了如何使用 Oak 框架来简化我们的代码,并实现了路由功能。希望这篇文章能够帮助你更好地了解 Deno 和 Oak 框架,并启发你在前端开发中的创造力。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6506c3d295b1f8cacd27324b