dancer.js

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

一点历史

“舞者”的第一版由Alexis Sukrieh和一些同事于2009年开始开发。当时Perl生态系统中没有类似的东西,社区选择并运行了它。

与大多数原型一样,根据Sukrieh的说法,有些设计决策可能需要改进。 因此,在2011年,Dancer 2诞生了,它是一种彻底的重写,它具有面向对象的所有内容,一致的高质量API,并且没有问题的全局变量可以传递。 如果有机会,大多数Perl程序员都会告诉您,拥有大量的全局变量是Perl的大忌。 大多数情况下,它都可以工作 ,但是却带来了维护和可伸缩性的噩梦。

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

你能做什么

Dancer使您可以定义路由 ,Web应用程序中的URL路径,然后指定当用户将Web浏览器发送到该路径时发生的情况。 该软件包括一个用于开发的极简Web服务器,并且与大多数PSGI兼容的Web服务器兼容,因此您可能希望在部署中在其上运行它。 您也可以将其作为CGI应用程序在Apache后面运行。

Dancer具有强大的插件系统,可将可插入模块快速添加到您的应用程序中。 对于常见的使用案例,已经存在许多插件,包括各种数据库系统,身份验证,本地化,会话管理,页面模板等等。 该框架足够轻巧,对于许多插件来说,它在很大程度上是语法上的糖-您可以通过简单地使用模块,并在钩子例程中插入一行或两行,而无需插件即可引入相同的功能。

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

use Dancer2;

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

start;


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

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

为什么是舞者?

我与Sawyer X进行了交谈,后者是在Dancer社区中投入大量精力的开发人员之一。 我问他为什么在Perl的许多其他Web框架中可能会选择Dancer。 他说,问题类似于选择编程语言,这是关于什么对您有效以及您的思维方式。 “宣告路线对您有意义吗?感觉舒服吗?” 他问。 如果是这样,那么Dancer可能就是您的框架。 他继续说,Dancer对您用来构建应用程序的工具的看法不高。 它提供了可用的默认值,但还有许多其他可能性。 例如,其中包含一个简单的模板引擎,但是您可以轻松使用Template Toolkit或其他模板引擎,而无需彻底更改应用程序。

我已经认识Sawyer大约四年了,所以当他继续说道:“这不是我从事Dancer工作的原因。我在Dancer中担任重要角色的原因是,我在那里找到了一个好家;我找到了一个让我感到高兴和高兴的好地方。这就是为什么我进入Perl社区。”

出来到地板上!

舞者社区欢迎新人们-创作者和消费者。 如果您有可以使用简单但功能丰富的框架的Perl Web应用程序,请尝试Dancer。 对于简单的模型和演示,我已经使用了不止一次,并且正在使用Dancer进行一些较大的事情的想法。 如果您想让Dancer采取新的动作,欢迎提出您的想法和代码。

角落

碎屑

本文是D Ruth Bavousett的“ Nooks and Crannies”专栏的一部分,该专栏探讨了您可能没有听说过的开源项目。 将主题建议发送至open@opensource.com ,主题行中包含Nooks和Crannies以及指向项目主页的链接,或者提交您自己的故事 。

翻译自: https://opensource.com/business/15/9/taking-spin-dancer-lightweight-perl-web-application-framework

dancer.js

dancer.js_与轻量级的Perl Web应用程序框架Dancer一起旋转相关推荐

  1. primefaces_轻量级Web应用程序框架:PrimeFaces(JSF)+ Guice + MyBatis(第2部分)

    primefaces 在这一部分中,我将继续演示JSF,Guice和MyBatis的集成. 在持久层中使用DBCP连接池和MYSQL数据库. 看一下第1部分 . 在上一篇文章中 ,我们创建了一个Ser ...

  2. 轻量级Web应用程序框架:PrimeFaces(JSF)+ Guice + MyBatis(第2部分)

    在这一部分中,我将继续演示JSF,Guice和MyBatis的集成. 在持久层中使用DBCP连接池和MYSQL数据库. 看一下第1部分 . 在上一篇文章中 ,我们创建了一个ServletContext ...

  3. ASP.NET Core开源Web应用程序框架ABP

    "作为面向服务架构(SOA)的一个变体,微服务是一种将应用程序分解成松散耦合服务的新型架构风格. 通过细粒度的服务和轻量级的协议,微服务提供了更多的模块化,使应用程序更容易理解,开发,测试, ...

  4. 卡布奇诺搭建教程_移动Web应用程序框架匹配,第2部分,探索卡布奇诺咖啡以进行移动Web应用程序开发

    卡布奇诺搭建教程 存档日期:2019年5月17日 | 首次发布:2010年11月23日 Web应用程序已经取代了桌面应用程序很多年了,尽管事实上它们的质量通常低于桌面应用程序. 这种差异的部分原因是台 ...

  5. Django Python Web应用程序框架简介

    在这个由四部分组成的系列文章的前三篇文章中,比较了不同的Python Web框架,我们介绍了Pyramid , Flask和Tornado Web框架. 我们已经构建了同一个应用程序3次,最终进入了D ...

  6. primefaces_轻量级Web应用程序:PrimeFaces(JSF)+ Guice + MyBatis(第1部分)

    primefaces 最近,我的朋友问我如何构建轻量级的Java Web应用程序. 许多Java Web开发人员会选择Spring和Hibernate来构建传统的Web应用程序. 但是,它可能不够轻巧 ...

  7. 轻量级Web应用程序:PrimeFaces(JSF)+ Guice + MyBatis(第1部分)

    最近,我的朋友问我如何构建轻量级的Java Web应用程序. 许多Java Web开发人员会选择Spring和Hibernate来构建传统的Web应用程序. 但是,它可能不够轻巧. 我建议他尝试使用G ...

  8. 【web-攻击web服务器】(13.2)易受攻击的服务器软件、Web 应用程序防火墙

    目录 一.易受攻击的服务器软件 1.1.简介: 1.2.应用程序框架缺陷 简述: .NET填充提示 1.3.内存管理漏洞 简述: 1.4.编码与规范化漏洞 简述: 1.5.查找Web服务器漏洞 简述: ...

  9. 使用 Stripes、MyBatis 和 Derby 创建 Java Web 应用程序

    在本教程中,我们将使用 Stripes.MyBatis 和 Derby 创建一个 Java Web 应用程序.我们使用 NetBeans 来构建应用程序.Apache Tomcat 用作 JSP 和 ...

最新文章

  1. ISME | 通过长读长宏基因组测序揭示南极土壤未培养细菌的生物合成潜力
  2. 浅谈Http模块,Express和Koa实现http服务
  3. php 接收序列化数据,PHP如何序列化数据?
  4. Linux内核目录结构(2.6版本以上的kernel)
  5. php7 安装zendopcache,安装PHP加速插件ZendOpcache
  6. 每个程序员都必读的12篇文章
  7. web工程导入MyEclipse 就变成Java工程 ———— 解决方案
  8. pythonlambda回调函数_Python中如何借助lambda来给回调函数传参
  9. md5sum/opensll md5
  10. 利用脚本启动java程序
  11. CIF进口货物流程图_FOB、CIF和CFR,你真的了解吗?
  12. python中的cls到底指的是什么,与self有什么区别?
  13. C# gdal创建和读取tiff文件
  14. 案例分析: 全球顶尖的物流公司Schenker采用SAPERION
  15. 产品全生命周期的产品结构和配置管理构架
  16. 一个有趣的字符滚动GIF动态验证码识别
  17. kubernetes 降本增效标准指南| 容器化计算资源利用率现象剖析
  18. 捕获窗口跳入跳出事件
  19. 系统盘的制作和安装系统的操作流程
  20. BZOJ 1193 HNOI2006 马步距离

热门文章

  1. 【项目记录】-上门洗车-汽车服务_0
  2. 陈天桥,一个人的江湖
  3. 47个“企业数字化转型”常见术语合集,看完秒懂~
  4. 计算机控制系统信号分析
  5. ASP.net连接Mysql数据库详解
  6. 红蓝对抗-HW红蓝队基本知识
  7. python银行自动取款机系统详写
  8. Rejecting re-init on previously-failed class java.lang.Class<org.apache.commons.httpclient.HttpClien
  9. SpringBoot整合es7.x启动报错:Rejecting mapping update to [AAA] as the final mapping would have more than 1
  10. MySQL整数数据类型