mojo:Perl实时Web开发框架,支持WebSocket与MVC架构

:sparkles: Mojolicious - Perl real-time web framework

分支40Tags757
文件最后提交记录最后更新时间
1 年前
5 年前
1 年前
1 个月前
5 年前
1 个月前
10 年前
5 年前
6 年前
1 个月前
13 年前
8 年前
8 个月前
1 年前

Mojolicious 为 Perl 网络开发带来了全新的视角,它基于多年构建 Catalyst 框架的经验,并利用了最新的网络标准和技术。您可以迅速启动项目,随着需求的增长,框架也会相应扩展。

Mojo 堆栈提供了一套一致的组件,可用于任何项目。指南涵盖了使用该框架的大部分内容,组件还提供了详尽的参考文档。Mojolicious 是一个实时网络框架,支持使用 WebSockets 构建不需要阻塞即可长运行请求的新一代网络应用。

现在加入我们,成为充满热情和知识开发者社区的一员!

特性

  • CPAN 上最受欢迎的分发版。
    • 一款卓越的实时网络框架,让您轻松将单个文件原型扩展为结构良好的 MVC 网络应用。
      • 提供构建云原生网络应用所需的一切,适用于最先进的容器环境。
      • 开箱即用,功能强大,包括 RESTful 路由、插件、命令、Perl 风格模板、内容协商、会话管理、表单验证、测试框架、静态文件服务器、CGI/PSGI 检测、一流的 Unicode 支持等众多功能供您探索。
    • 一套强大的网络开发工具包,适用于各类应用,不依赖于任何网络框架。
      • 支持全栈 HTTP 和 WebSocket 客户端/服务器实现,包括 IPv6、TLS、SNI、IDNA、HTTP/SOCKS5 代理、UNIX 域套接字、Comet(长轮询)、服务器发送事件(SSE)、Promises/A+、async/await、持久连接、连接池、超时、cookies、多部分以及 gzip 压缩支持。
      • 内置非阻塞 I/O 网络服务器,支持多种事件循环以及可选的预派生和热部署,非常适合构建高度可扩展的网络服务。
      • 支持 CSS 选择器的 JSON 和 HTML/XML 解析器。
    • 非常清晰、可移植且面向对象的纯 Perl API,无隐藏魔法,除 Perl 5.26.0 以外无其他依赖(也可以使用低至 5.16.0 的版本,但可能需要安装额外的 CPAN 模块)
    • 也提供 JavaScript 版本。
    • 基于多年开发 Catalyst 经验的全新代码,免费且开源。
    • 数百个第三方 扩展 和高质量衍生项目,如 Minion 任务队列。

安装

您只需一行代码,不到一分钟即可完成。

$ curl -L https://cpanmin.us | perl - -M https://cpan.metacpan.org -n Mojolicious

我们建议使用 Perlbrew 环境。

快速入门

这三行代码就是一个完整的网络应用。

use Mojolicious::Lite;

get '/' => {text => 'I ♥ Mojolicious!'};

app->start;

要使用内置的开发Web服务器运行示例,只需将代码放入一个文件中,然后使用 morbo 启动它。

$ morbo hello.pl
    Web应用可通过 http://127.0.0.1:3000 访问

使用您偏好的任何HTTP客户端进行测试。

$ curl http://127.0.0.1:3000/
    I ♥ Mojolicious!

HTML5网络的万能胶带

在如下的精美单一文件原型中,使用最新的Perl和HTML特性,并且可以轻松地扩展成为结构良好的 模型-视图-控制器 (Model-View-Controller) Web应用。

use Mojolicious::Lite -signatures;

# Render template "index.html.ep" from the DATA section
get '/' => sub ($c) {
  $c->render(template => 'index');
};

# WebSocket service used by the template to extract the title from a website
websocket '/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';
<script>
  const ws = new WebSocket('<%= $url->to_abs %>');
  ws.onmessage = function (event) { document.body.innerHTML += event.data };
  ws.onopen    = function (event) { ws.send('https://mojolicious.org') };
</script>

想了解更多?

查阅我们的优秀文档吧!

项目介绍

闪耀的宝石:Mojolicious —— Perl 实时网络框架【此简介由AI生成】

定制我的领域
2122.75 K590访问 GitHub