使用 Dancer 轻装上阵:轻量级 Perl Web 应用程序框架

尚无读者喜欢这篇文章。
Kids doing a line dance

图片来源:Florida Memory。Opensource.com 修改。CC BY-SA 2.0。

Dancer 是一个轻量级的 Perl Web 应用程序框架,其灵感来自于 Ruby 的 Sinatra 框架。Dancer 自诩简单灵活,但功能强大,足以运行您能想到的绝大多数 Web 应用程序。

一点历史背景

Dancer 的第一个版本由 Alexis Sukrieh 和一些同事于 2009 年开始开发。当时 Perl 生态系统中没有任何类似的东西,社区接纳并迅速发展了它。

正如 Sukrieh 所说,像大多数原型一样,有些设计决策本可以改进。因此,在 2011 年,Dancer 2 诞生了——这是一个从头开始重写的版本,一切都是面向对象的,API 一致且高质量,并且没有有问题的全局变量需要传递。大多数 Perl 程序员如果有机会,都会告诉您,拥有大量全局变量是 Perl 的一大禁忌。它在大多数情况下都能工作,但它带来了维护和可扩展性方面的噩梦。

鉴于这些改进,社区以同样的热情拥抱了 Dancer 2,Dancer 现在已成为生产环境的可行框架。

您可以用它做什么

Dancer 允许您定义路由,即 Web 应用程序中的 URL 路径,然后指定当用户将其 Web 浏览器发送到该路径时会发生什么。该软件包含一个用于开发用途的极简 Web 服务器,并且与您可能希望在部署中运行它的任何 Web 服务器兼容,因为它符合 PSGI 标准。您也可以将其作为 CGI 应用程序在 Apache 后端运行。

Dancer 具有强大的插件系统,允许将可插拔模块快速添加到您的应用程序中。许多插件已经存在,用于常见的用例,包括各种数据库系统、身份验证、本地化、会话管理、页面模板等等。该框架足够轻量级,以至于对于许多插件来说,它基本上是语法糖——您可以通过简单地使用模块,并可能在钩子例程中添加一两行代码,在不使用插件的情况下引入相同的功能。

这是一个非常基础的 Dancer 应用程序


use Dancer2;

get '/' => sub {
  return 'Hello World!';
};

start;

如果您要在内置 Web 服务器中运行它,并将 Web 浏览器指向 http://localhost:3000,您将在屏幕上看到“Hello World!”,仅此而已。任何其他 URL 都将返回格式良好的“未找到”页面。

路由支持通配符匹配,因此您可以轻松使用 Dancer 创建 RESTful 应用程序,并且还有一个插件可以简化 Ajax 的使用。

为什么选择 Dancer?

我与 Sawyer X 进行了交谈,他是多年来一直深度参与 Dancer 社区的开发者之一。我问他,为什么人们可能会选择 Dancer 而不是 Perl 的许多其他 Web 框架。他说,这个问题类似于选择编程语言——这取决于什么对您和您的思维方式有效。“声明路由对您来说有意义吗?您觉得舒服吗?”他问道。如果答案是肯定的,那么 Dancer 可能就是适合您的框架。他继续说,Dancer 对您用于构建应用程序的工具没有太多意见。它提供了可用的默认设置,但还有很多其他可能性。例如,它包含一个简单的模板引擎,但您可以轻松地使用 Template Toolkit 或其他模板引擎,而无需大幅更改应用程序。

我已经认识 Sawyer 大约四年了,所以我并不惊讶他接着说:“这不是我参与 Dancer 的原因。我之所以在 Dancer 中扮演重要角色,是因为我在那里找到了一个好的归宿;我找到了一个让我感到受欢迎和快乐的好地方。这就是我身处 Perl 社区的原因。”

走到舞池中央!

Dancer 社区欢迎新人——无论是创建者还是使用者。如果您有一个 Perl Web 应用程序可以使用一个简单但功能丰富的框架,请试用 Dancer。我曾多次将其用于简单的模型和演示,并且正在研究使用 Dancer 构建更大规模应用的一些想法。如果您想看到 Dancer 展现新招式,欢迎您提出想法和代码。

角落

缝隙

本文是 D Ruth Bavousett 的 角落和缝隙专栏 的一部分,该专栏探索您可能没有听说过的开源项目。请将专栏建议发送至 open@opensource.com,主题行中包含角落和缝隙以及项目主页的链接,或提交您自己的故事.

User profile image.
Ruth Holloway 长期以来一直担任系统管理员和软件开发人员,她的职业生涯始于很久以前的 VAX 11/780。她的职业生涯(到目前为止)大部分时间都在为图书馆提供技术需求服务,并且自 2008 年以来一直是 Koha 开源图书馆自动化套件的贡献者。Ruth 目前是 Clearbuilt 的 Perl 开发人员和项目负责人。

评论已关闭。

Creative Commons License本作品根据知识共享署名-相同方式共享 4.0 国际许可协议授权。
© . All rights reserved.