《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的Mojolicious 是基于多年开发 Catalyst 框架的经验,并利用最新的 Web 标准和技术,对Perl Web 开发进行了全新的尝试。
Mojo 堆栈提供了一组一致的组件,可以在任何项目中使用。这些指南涵盖了使用框架的大部分方面,并且组件具有全面的参考文档。Mojolicious 是一个实时 Web 框架,它允许一类新的 Web 应用程序使用 WebSockets 并具有长时间运行的请求而不会阻塞。
$ curl -L https://cpanmin.us | perl - -M https://cpan.metacpan.org -n Mojolicious
我们推荐使用Perlbrew环境。
入门
这三行是一个完整的 Web 应用程序。
use Mojolicious::Lite;get '/' => {text => 'I ♥ Mojolicious!'};app->start;
要使用内置的开发 Web 服务器运行该示例,只需将代码放入一个文件并以morbo.
$ morbo hello.plWeb application available at http://127.0.0.1:3000
使用您喜欢的任何 HTTP 客户端对其进行测试。
$ curl http://127.0.0.1:3000/I ♥ Mojolicious!
Mojolicious 专门使用 Perl 的现代子集,因此所有文档都假定已启用strict、warnings、utf8和 Perl 5.16功能,即使示例没有特别提及。
use strict;use warnings;use utf8;use feature ':5.16';
某些模块,例如Mojo::Base和Mojolicious::Lite,会在使用时自动为您启用它们。
签名
在 Perl 5.20+ 上,您还可以使用-signatures带有Mojo::Base的标志来启用对子例程签名的支持。为清楚起见,所有示例中都使用了签名,即使-signatures为简洁起见省略了。
变量名
为简洁起见,示例变量将反映 API 使用的数据类型。例如,$bytes或者$chars区分它是编码字节还是 Perl字符串中的解码字符,$bool如果该值仅指示真假,$c则表示Mojolicious::Controller对象,或$app表示应用程序对象。
Mojo::HelloWorld - 你好世界!
概要
use Mojo::HelloWorld;my $hello = Mojo::HelloWorld->new;$hello->start;
描述
Mojo::HelloWorld是默认的Mojolicious应用程序,主要用于测试。
属性
Mojo::HelloWorld继承了Mojolicious的所有属性。
方法
Mojo::HelloWorld继承了Mojolicious的所有方法并实现了以下新方法。
启动
$hello->startup;
在像这样漂亮的单文件原型中使用所有最新的 Perl 和 HTML 功能,并将 它们轻松地扩展为结构良好的 模型-视图-控制器Web 应用程序。
use Mojolicious::Lite -signatures;# Render template "index.html.ep" from the DATA sectionget '/' => sub ($c) { $c->render(template => 'index');};# WebSocket service used by the template to extract the title from a websitewebsocket '/title' => sub ($c) { $c->on(message => sub ($c, $msg) { my $title = $c->ua->get($msg)->result->dom->at('title')->text; $c->send($title); });};app->start;__DATA__@@ index.html.ep% my $url = url_for 'title';
—END—
开源协议:Artistic-2.0 license
开源地址:https://github.com/mojolicious/mojo
留言与评论(共有 0 条评论) “” |