dancer.js_与轻量级的Perl Web应用程序框架Dancer一起旋转
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一起旋转相关推荐
- primefaces_轻量级Web应用程序框架:PrimeFaces(JSF)+ Guice + MyBatis(第2部分)
primefaces 在这一部分中,我将继续演示JSF,Guice和MyBatis的集成. 在持久层中使用DBCP连接池和MYSQL数据库. 看一下第1部分 . 在上一篇文章中 ,我们创建了一个Ser ...
- 轻量级Web应用程序框架:PrimeFaces(JSF)+ Guice + MyBatis(第2部分)
在这一部分中,我将继续演示JSF,Guice和MyBatis的集成. 在持久层中使用DBCP连接池和MYSQL数据库. 看一下第1部分 . 在上一篇文章中 ,我们创建了一个ServletContext ...
- ASP.NET Core开源Web应用程序框架ABP
"作为面向服务架构(SOA)的一个变体,微服务是一种将应用程序分解成松散耦合服务的新型架构风格. 通过细粒度的服务和轻量级的协议,微服务提供了更多的模块化,使应用程序更容易理解,开发,测试, ...
- 卡布奇诺搭建教程_移动Web应用程序框架匹配,第2部分,探索卡布奇诺咖啡以进行移动Web应用程序开发
卡布奇诺搭建教程 存档日期:2019年5月17日 | 首次发布:2010年11月23日 Web应用程序已经取代了桌面应用程序很多年了,尽管事实上它们的质量通常低于桌面应用程序. 这种差异的部分原因是台 ...
- Django Python Web应用程序框架简介
在这个由四部分组成的系列文章的前三篇文章中,比较了不同的Python Web框架,我们介绍了Pyramid , Flask和Tornado Web框架. 我们已经构建了同一个应用程序3次,最终进入了D ...
- primefaces_轻量级Web应用程序:PrimeFaces(JSF)+ Guice + MyBatis(第1部分)
primefaces 最近,我的朋友问我如何构建轻量级的Java Web应用程序. 许多Java Web开发人员会选择Spring和Hibernate来构建传统的Web应用程序. 但是,它可能不够轻巧 ...
- 轻量级Web应用程序:PrimeFaces(JSF)+ Guice + MyBatis(第1部分)
最近,我的朋友问我如何构建轻量级的Java Web应用程序. 许多Java Web开发人员会选择Spring和Hibernate来构建传统的Web应用程序. 但是,它可能不够轻巧. 我建议他尝试使用G ...
- 【web-攻击web服务器】(13.2)易受攻击的服务器软件、Web 应用程序防火墙
目录 一.易受攻击的服务器软件 1.1.简介: 1.2.应用程序框架缺陷 简述: .NET填充提示 1.3.内存管理漏洞 简述: 1.4.编码与规范化漏洞 简述: 1.5.查找Web服务器漏洞 简述: ...
- 使用 Stripes、MyBatis 和 Derby 创建 Java Web 应用程序
在本教程中,我们将使用 Stripes.MyBatis 和 Derby 创建一个 Java Web 应用程序.我们使用 NetBeans 来构建应用程序.Apache Tomcat 用作 JSP 和 ...
最新文章
- ISME | 通过长读长宏基因组测序揭示南极土壤未培养细菌的生物合成潜力
- 浅谈Http模块,Express和Koa实现http服务
- php 接收序列化数据,PHP如何序列化数据?
- Linux内核目录结构(2.6版本以上的kernel)
- php7 安装zendopcache,安装PHP加速插件ZendOpcache
- 每个程序员都必读的12篇文章
- web工程导入MyEclipse 就变成Java工程 ———— 解决方案
- pythonlambda回调函数_Python中如何借助lambda来给回调函数传参
- md5sum/opensll md5
- 利用脚本启动java程序
- CIF进口货物流程图_FOB、CIF和CFR,你真的了解吗?
- python中的cls到底指的是什么,与self有什么区别?
- C# gdal创建和读取tiff文件
- 案例分析: 全球顶尖的物流公司Schenker采用SAPERION
- 产品全生命周期的产品结构和配置管理构架
- 一个有趣的字符滚动GIF动态验证码识别
- kubernetes 降本增效标准指南| 容器化计算资源利用率现象剖析
- 捕获窗口跳入跳出事件
- 系统盘的制作和安装系统的操作流程
- BZOJ 1193 HNOI2006 马步距离
热门文章
- 【项目记录】-上门洗车-汽车服务_0
- 陈天桥,一个人的江湖
- 47个“企业数字化转型”常见术语合集,看完秒懂~
- 计算机控制系统信号分析
- ASP.net连接Mysql数据库详解
- 红蓝对抗-HW红蓝队基本知识
- python银行自动取款机系统详写
- Rejecting re-init on previously-failed class java.lang.Class<org.apache.commons.httpclient.HttpClien
- SpringBoot整合es7.x启动报错:Rejecting mapping update to [AAA] as the final mapping would have more than 1
- MySQL整数数据类型