跳转到主要内容

专注于可测试性和可重用性的Web框架

项目描述

Avalanche是一个专注于可测试性和可重用性的Python Web框架

它使用Jinja2作为默认模板系统,并且不包含任何持久层。

Avalanche的目标(或为什么还需要另一个Web框架?)

可测试性

Avalanche的设计使其能够(对您来说)编写良好的单元测试。这不仅仅是使测试变得容易。单元测试应该

  • 在失败时提供清晰的错误信息

  • 仅在测试的功能有问题时失败,而不是在每次代码更改时

  • 快速

可重用性

大多数框架都声称某种形式的可重用性是它们的设计目标之一。Avalanche的“可重用性”目标意味着 源代码 可重用性。

许多框架提供了一些用于可重用/可插拔 子应用程序 的机制,但是当需要配置/修改这些应用程序的源代码时,并不总是容易重用这些应用程序的源代码。可插拔应用程序也是一个非常重要的功能,但截至目前,Avalanche尚不支持该功能。

不仅应该能够编写可重用代码,而且代码在第一次编写时就应该是可重用的。不应该建议以某种方式编写代码,然后后来又必须修改它以使其可重用。例如,它反对说“使用 视图 (处理程序)函数”。然后… “如果你想让你的 视图 可重用,请将它们转换为基于类的 视图!”。

当然,Avalanche不会创造奇迹。可测试性和可重用性最终将取决于应用程序代码。但框架在建立 正确 的路径上发挥着重要作用。

以下列出了目标,希望阅读设计和教程后,您能清楚地了解这些目标是如何实现的。

项目详情

Avalanche设计

超越MVC(模型-视图-控制器)

MVC是一种软件架构模式,旨在将“领域逻辑”与用户界面隔离。这种关注点的分离使得创建更好的应用程序代码成为可能。这种模式在许多桌面框架中非常成功,因此成为创建Web框架的参考。问题是这种架构不能直接映射到Web应用程序的工作方式。

即使是所谓的MVC框架实际上也不是真正的MVC。所以我们只保留MVC的目标。即编写干净、可重用和可测试的代码。

Web应用程序

本质上,Web应用程序所做的就是接收一个HTTP请求,处理它并生成一个HTTP响应。

                    +------------------+
HTTP Request ------>| web application  + ----->  HTTP Response
                    +------------------+

发送和接收HTTP由Web服务器处理,所以我们不需要担心这一点。让我们更详细地看看Web应用程序是如何生成HTTP响应的。

                  +------+      +-------+
HTTP request ---->|router|----->|handler|----> HTTP response
                  +------+      +-------+

路由器将分析请求并将其调度到请求处理器,该处理器将创建响应。

请求处理器风格

主要有三种请求处理器风格。
  • 单个函数

  • 类方法

Avalanche使用第三种风格,即类。使用类作为请求处理器更适合我们的目标,因为它提供了更大的灵活性,更容易修改/扩展和重用处理器的一部分。

请求处理器处理

请求处理器处理可以分为三个阶段

             +-----------------+                        +------------+                  +----------+
request ---->| param converter |---- param objects ---->| processing |--- context ----->| renderer |----> response
             +-----------------+                        +------------+                  +----------+
  1. 参数转换器 - 从HTTP请求中获取参数

HTTP是一种文本协议,应用程序通常会从请求中获取一些参数,并将字符串值转换为一些本地数据类型。这些参数来自URI路径、URI查询、POST数据、cookies等。

这就是您将编写一些粘合代码来将HTTP映射到您的应用程序代码的地方。

  1. 处理/上下文构建器

处理是应用程序逻辑。它通常会访问持久层(有时称为模型,但这完全取决于应用程序代码和Web框架在此没有作用)。它也可能触发其他操作,如进行批量处理或访问第三方应用程序。请注意,通常这种应用程序逻辑独立于HTTP。

这种处理也可能包括简单的数据检索。在这种情况下,处理可能会生成一个上下文。上下文是一个术语,用于表示渲染器用于创建HTTP响应的数据。

网页通常由几个元素组成,所以有时将工作分成多个“上下文构建器”是有意义的。

  1. 渲染器 - 生成输出

渲染器将应用程序处理的结果转换为文本以创建HTTP响应。渲染器通常使用模板系统生成HTML代码或将数据转换为JSON。

在avalanche中,您应该分别编写处理器的三个阶段的代码,让框架将不同的部分组合在一起。

继续阅读教程,了解具体的样子。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定该选择哪个,请了解更多关于 安装包 的信息。

源代码发行版

avalanche-0.3.0.tar.gz (14.1 kB 查看哈希值)

上传时间 源代码

支持者