在 Deno 中编写强大的 Web 应用程序
Deno 是一个新兴的 JavaScript/TypeScript 运行时环境,由 Node.js 的创始人 Ryan Dahl 开发。Deno 具有许多 Node.js 需要的功能,并且还具有更多的安全性和可靠性。如果您是一个前端开发人员,Deno 是一个非常好的选择来构建强大的 Web 应用程序。在本文中,我们将深入研究在 Deno 中编写 Web 应用程序的方法和最佳实践。
安装和配置 Deno
首先,您需要安装 Deno,可以到官方网站下载最新的安装程序。安装完成后,您可以使用以下命令来检查 Deno 是否已正确安装:
deno --version
如果您可以看到版本号的输出,则说明 Deno 已经正确安装。接下来,我们需要为 Deno 应用程序设置环境变量。打开终端,输入以下命令:
export DENO_INSTALL="/usr/local" export PATH="$DENO_INSTALL/bin:$PATH"
这些命令将设置 Deno 的环境变量,以便您可以在任何地方运行 Deno 程序。
编写一个简单的 Web 应用程序
接下来,我们将编写一个简单的 Web 应用程序来熟悉 Deno 的使用方式。在项目的根目录下,创建一个名为 index.ts 的文件,并添加以下代码:
import { serve } from "https://deno.land/std/http/server.ts"; const server = serve({ port: 8000 }); console.log("Server is running on http://localhost:8000/"); for await (const req of server) { req.respond({ body: "Hello, Deno!\n" }); }
这段代码导入了 Deno 自带的 serve
模块,并创建了一个简单的 HTTP 服务器。该服务器在本地主机的 8000 端口监听请求,并在收到请求时返回字符串 "Hello, Deno!"。
在终端中,输入以下命令,以启动该应用程序:
deno run --allow-net index.ts
以上命令将启动此应用程序,使其监听本地端口。在浏览器中访问 http://localhost:8000/,您应该可以看到 "Hello, Deno!" 的输出。
深入了解 Deno 的网络 API
作为一个前端工程师,您一定熟悉 Node.js 的网络 API。Deno 提供了与 Node.js 网络 API 类似的 API,但设计得更加简单和可靠。
在 Deno 中,您可以使用标准 web API,如 fetch
、WebSocket
、URLSearchParams
和 FormData
来进行网络编程。以下是示例代码:
// javascriptcn.com 代码示例 import { serve } from "https://deno.land/std/http/server.ts"; const server = serve({ port: 8000 }); console.log("Server is running on http://localhost:8000/"); for await (const req of server) { const url = new URL(req.url, `http://${req.headers.get("host")}`); if (url.pathname === "/api/data") { const data = { message: "Hello, Deno!" }; req.respond({ body: JSON.stringify(data) }); } else { req.respond({ body: "Not found" }); } }
在此代码示例中,我们使用了 URL
类来解析请求的 URL,并根据 URL 的路径返回相应的数据。如果请求的 URL 路径为 /api/data,则返回 JSON 数据 { message: "Hello, Deno!" };否则返回字符串 "Not found"。
我们还可以使用 WebSocket 来实现实时通信:
// javascriptcn.com 代码示例 import { serve } from "https://deno.land/std/http/server.ts"; import { acceptWebSocket, isWebSocketCloseEvent, isWebSocketPingEvent, } from "https://deno.land/std/ws/mod.ts"; const server = serve({ port: 8000 }); console.log("Server is running on http://localhost:8000/"); for await (const req of server) { const url = new URL(req.url, `http://${req.headers.get("host")}`); if (url.pathname === "/ws") { const { conn, r: bufReader, w: bufWriter, headers } = req; acceptWebSocket({ conn, bufReader, bufWriter, headers, }).then(async (sock) => { console.log("Client connected"); try { for await (const ev of sock) { if (typeof ev === "string") { console.log("Received string:", ev); await sock.send(ev.toUpperCase()); } else if (isWebSocketPingEvent(ev)) { console.log("Received ping"); } else if (isWebSocketCloseEvent(ev)) { console.log("Client closed the connection"); } } } catch (err) { console.error(`WebSocket error: ${err}`); } }); } else { req.respond({ body: "Not found" }); } }
以上代码演示了如何实现 WebSocket 通信。它在根路径的 8000 端口上监听请求。当请求路径为 /ws 时,我们将请求传递给 acceptWebSocket
函数,以在应用程序中使用 WebSocket。
acceptWebSocket
函数返回一个 WebSocket 对象,允许您在服务器和客户端之间直接发送数据。在此示例中,我们将接收到的所有字符串都转换为大写,并将其发送回客户端。
建立与 MongoDB 的连接
在 Deno 中,您可以使用 Mongo 驱动程序来连接 MongoDB 数据库。以下是示例代码:
// javascriptcn.com 代码示例 import { MongoClient } from "https://deno.land/x/mongo/mod.ts"; const client = new MongoClient(); client.connectWithUri("mongodb://localhost:27017"); const db = client.database("mydb"); const users = db.collection("users"); const insertId = await users.insertOne({ name: "Tom", age: 29 }); const result = await users.find({ _id: insertId }).toArray(); console.log(result);
在此代码示例中,我们使用 MongoClient
来连接到 MongoDB 数据库。之后,我们将访问 mydb
数据库的 users
集合,并向其中插入一条数据,其中包含名称和年龄。最后,我们将通过 find
方法获取该数据。
总结
在本文中,我们研究了如何在 Deno 中编写强大的 Web 应用程序。我们了解了 Deno 的安装和配置,以及如何编写简单的 Web 服务器、使用网络 API 和建立连接到 MongoDB 的连接。Deno 的最大优势是其安全性和可靠性,这使得它成为一个非常好的选择来构建现代 Web 应用程序。我们只是浅尝了一下 Deno 的功能,因此请留心该项目和社区的发展,以了解更多关于 Deno 和其生态系统的信息。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/654c77517d4982a6eb5f5ab2