Deno 是一个安全的运行时环境,用于在 JavaScript 和 TypeScript 上构建可伸缩的服务端应用程序。与 Node.js 不同,它允许您在浏览器外部编写模块和应用程序,并提供一组内置的优秀功能和开箱即用的工具。在本文中,我们将学习如何使用 Deno 进行微服务开发。
安装 Deno
要使用 Deno 进行微服务开发,您需要安装它。您可以在 Deno 官网上下载适合您操作系统的安装包或使用 Deno 安装器。例如,如果您正在 macOS 上运行,则可以使用以下命令安装:
brew install deno
测试安装是否成功可以输入以下命令进行测试:
deno run https://deno.land/std/examples/welcome.ts
创建一个微服务
我们将从创建一个简单的 Deno 微服务开始。让我们在项目目录中创建一个名为 app.js
的文件,并在其中添加以下代码:
import { serve } from "https://deno.land/std/http/server.ts"; const server = serve({ port: 8080 }); console.log("Server is up and running at http://localhost:8080/ "); for await (const request of server) { request.respond({ body: "Hello Deno!\n" }); }
在这里,我们导入用于创建服务器的 serve
函数,然后通过传递一个端口号来创建一个服务器实例。接下来,我们在服务器上循环等待 incoming requests,并使用请求对象的 respond
方法返回响应。我们可以使用以下命令运行这个程序:
deno run --allow-net app.js
现在,我们可以通过访问 http://localhost:8080/
来测试这个服务器是否工作正常,应该会看到浏览器显示 Hello Deno!
的页面。
使用中间件
现在,我们已经了解了如何创建一个简单的 Deno 微服务,接下来我们将学习如何使用中间件来扩展服务器的功能。让我们创建一个名为 logger.ts
的文件,并在其中添加以下代码:
export function logger(context: any, next: any) { console.log(`${context.request.method} ${context.request.url}`); next(); }
这个中间件简单地记录下请求的 HTTP 方法和 URL 并调用下一个中间件。接下来,我们需要将这个中间件添加到我们的服务器中。让我们将 app.js
文件修改为:
-- -------------------- ---- ------- ------ - ----------- - ---- --------------------------------- ------ - ------ - ---- -------------- ----- --- - --- -------------- ---------------- ----------------- ---- -- - --------------------- - ------ ------- --- ----- ------------ ----- ---- --- ------------------- -- -- --- ------- -- ---------------------- ---
在这里,我们使用了 Oak 框架,并在服务器上使用了 use
方法添加了我们刚刚编写的中间件,然后又添加了一个匿名函数,用于返回响应。运行这个程序时使用以下命令:
deno run --allow-net --allow-read app.js
然后,我们可以再次通过访问 http://localhost:8080/
来测试这个服务器是否工作正常,同时我们还可以在控制台中看到 Logger 输出的日志信息。
使用数据库
现在我们已经了解了如何使用 Deno 创建微服务并使用中间件,下面我们将学习如何使用 MongoDB 等常见数据库扩展服务器功能。
让我们安装 MongoDB 的 Deno 包,并为我们的应用程序配置 MongoDB 连接。首先,我们可以使用如下命令安装 MongoDB 的 Deno 包:
deno install https://deno.land/x/mongo/mod.ts
创建一个名为 database.ts
的文件,并将以下代码添加到其中:
import { MongoClient } from "https://deno.land/x/mongo/mod.ts"; const client = new MongoClient(); client.connectWithUri("mongodb://localhost:27017"); export default client;
这个文件主要负责连接 MongoDB 数据库。接下来,我们可以在我们的服务器代码 app.js
中添加以下代码:
-- -------------------- ---- ------- ------ - ------------ ------ - ---- --------------------------------- ------ - -------- - ---- --------------------------------------- ------ - ------ - ---- -------------- ------ ------ ---- ---------------- ----- -------- - --- ----------------- ----- --- - --- -------------- ----- ------ - --- --------- ---------------- --------------- ----- --------- -- - ----- -- - ------ ------------------------- ----- ----- - ----- ------------------------------ --------------------- - ------ --- ------------------------- --------------------------------- ----- ------------ ----- ---- --- ------------------- -- -- --- ------- -- ---------------------- ---
在这里,我们使用 Oak 框架和 MongoDB 的 Deno 包,定义了一个名为 router
的 Router 中间件,并使用了 OakMongo 对象在路由中与 MongoDB 进行交互。
我们在路由中定义了一个 GET
请求,获取了数据库中所有的用户,并将其发送回响应。最后,我们使用 use
方法添加路由和允许的方法并启动服务器。您可以使用以下命令运行程序:
deno run --allow-net --allow-read --allow-write --allow-plugin --unstable app.js
通过访问 http://localhost:8080/
可以查看路由返回的数据。
结论
现在,我们已经了解了如何使用 Deno 创建微服务并使用中间件和 MongoDB 等常见数据库。我们还仅仅涉及了 Deno 的一些基本功能,您可以在实践中发现 Deno 的更多有趣特性。
这只是前端微服务开发的一个简短示例,Deno 的使用远不止于此。希望这篇文章为您提供了有关如何使用 Deno 进行微服务开发的深度和指导性知识。要了解更多有关 Deno 的用例和功能的信息,请访问 Deno 的官方文档。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67163487ad1e889fe21b5435