简介
Deno 是一个由 Node.js 创始人 Ryan Dahl 发布的一种运行时,它支持 TypeScript 和 JavaScript。Deno 通过安全性、开箱即用的内置工具和高效性来吸引开发者的关注。在 Deno 中,就不需要像 Node.js 那样使用包管理器,也没有与版本相关的问题率,这使得 Deno 更加适合用在生产环境。
在这篇文章中,我们将谈论如何使用 Deno 来搭建一个框架来简化前端开发任务,并采用最佳实践让框架更加优化。
组件设计与实现
Deno 文件的结构
首先,我们需要建立一个基本的 Deno 应用程序,该应用程序将包含文件结构如下:
- app/ - controllers/ - middlewares/ - models/ - routes/ - server.ts
在这个基本应用程序中,我们将需要实现以下主要组件:
Controllers
控制器负责接收请求,并响应相应的结果。控制器会从请求中获取数据、处理它并返回一个响应给客户端。
我们来看一下一个简单的控制器实例:
-- -------------------- ---- ------- ------ - ------------- - ---- --------------------------------- ----- -------------- - ------ ----- ----------- -------------- - ----- - ----- ----- - - ----- ------------------------- ----------------- ------- ------------------- - ---- ----------------- - - -------- ----- -------- ----- -------- -- - - ------ - -------------- -
Routes
路由只是一个映射请求 URL 到特定控制器的表。当一个 URL 被请求,路由负责将请求分发到对应的控制器上,并返回相应的结果。
我们来看一下一个简单的路由实例:
-- -------------------- ---- ------- ------ - ------ - ---- --------------------------------- ------ - -------------- - ---- ----------------------------------- ----- ------ - --- --------- -- ------ ---- ------ ---- --------------------- ----------------------- ------ - ------ -
Middlewares
中间件与 Express 中的中间件十分相似,这些函数拦截客户端请求并在控制器接收请求之前对请求进行处理。
我们来看一下一个简单的中间件实例:
-- -------------------- ---- ------- ------ - ------------- - ---- --------------------------------- ----- ---------------- - ----- ----- -------------- ----- ---- -- - -- --- --- ------ --- --- --- ---------------------------------- --------------------- ----- ------- - ------ - ---------------- -
代码实践
由于 Oak 是一个基于中间件的开发框架,这就意味着我们可以利用它来对 HTTP 请求进行拦截处理。我们现在要做的事情就是编写带有中间件和控制器的简单路由。
控制器
下面是一个控制器,它接受一个 HTTP POST 请求,并将用户名和密码保存到一个全局哈希表中:
-- -------------------- ---- ------- ------ - ------------- - ---- --------------------------------- ----- ----- - --- ------ ----- --------------- - ------ ----- ---------- -------------- - ----- - ----- - - ----- ----------------------- --------- ----- - --------- -------- - - ------ -- ---------------------- -- ---------------------------- --- ---------- - ------------------- - ---- ----------------- - - ---------- -------- ------ -- ------- - ----------------- - - ---------- ------- ---- -- - - ------ - --------------- -
中间件
下面是一个简单的中间件,打印每个请求:
import { RouterContext } from "https://deno.land/x/oak/mod.ts"; const loggingMiddleware = async (ctx: RouterContext, next: Function) => { console.log(`${ctx.request.method}: ${ctx.request.url}`); await next(); } export { loggingMiddleware }
路由
从 /login
接受一个 POST 请求,把用户的用户名和密码传递给 LoginController
类的 login
方法。
-- -------------------- ---- ------- ------ - ------ - ---- --------------------------------- ------ - --------------- - ---- ------------------------------------ ------ - ----------------- - ---- ---------------------------- ----- ------ - --- --------- ------------------------------ --------------------- ----------------------- ------ - ------ --
启动服务器
最后,我们需要在服务器上启动这些路由,这是非常简单的。我们把各个组件连接起来,创建一个服务器。
-- -------------------- ---- ------- ------ - ----------- - ---- --------------------------------- ------ - ------ - ---- -------------------- ----- ---- - ----- ----- --- - --- -------------- ------------------------- --------------------------------- ------------------- ------- -- ---- ---------- ----- ------------ ---- ---
总结
作为未来的 Deno 技术的一部分,框架设计使用需要注意安全性、高效性和可靠性。使用 Oak 和 TypeScript 开发框架的过程中,编写了控制器、中间件和路由的代码,最后把所有这些组件连接起来,创建了一个工作的 Deno 应用程序。Denon 可以帮助我们更轻松地启动我们的应用程序,可以实时监测代码的变化以及重新启动服务。我们在构建框架的时候,可以结合 Denon 来编写开发和调试工作,让开发和执行的流程更加流畅。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/646734ff968c7c53b07972c2