Web 框架 mojo.js 1.0 正式发布,从 Perl 到 Node.js

历经一年多的开发,mojo.js 终于发布了首个主要版本 1.0

mojo.js 是 Node.js 实时 Web 框架,可将它视作采用 TypeScript 重写的 Mojolicious(Mojolicious 是 Perl 开发的 Web 框架)。mojo.js 使用了所有最新的 JavaScript 特性,专为聚焦超媒体 (hypermedia) 的后端 Web 服务精心设计。

主要特性

  • 实时 Web 框架,开发者可轻松地将单文件原型扩展为结构良好的 MVC Web 应用程序。
    • 开箱即用的强大 RESTful 路由、WebSockets、插件、命令、日志记录、模板、内容协商 (content negotiation)、会话管理、表单和 JSON 验证、测试框架、静态文件服务器、集群模式、CGI 检测、一等公民的 Unicode 支持等
  • 强大的 Web 开发工具包,开发者可以将它用于各种应用程序,独立于 Web 框架。
    • 高性能 HTTP 和 WebSocket 客户端 / 服务器实现,支持 HTTPS/WSS、cookie、重定向、urlencoded/multi-part 表单、文件上传、JSON/YAML、HTML/XML、模拟数据、API 测试、HTTP/SOCKS 代理和 gzip 压缩。
    • 支持 CSS 选择器的 HTML/XML 解析器。
  • 基于 classasync/await 的 API,采用 TypeScript 编写,几乎不需要依赖,因此可避免 NPM 依赖地狱。
  • 基于具有数十年积累的 Mojolicious 和 Catalyst 的代码,免费且开源。

下面的代码示例是一个"hello world"单文件应用,包含 WebSockets:

import mojo from '@mojojs/core';

const app = mojo();

app.get('/', async ctx => {
  await ctx.render({inline: inlineTemplate});
});

app.websocket('/echo', ctx => {
  ctx.plain(async ws => {
    for await (const message of ws) {
      ws.send(message);
    }
  });
});

app.start();

const inlineTemplate = `
<script>
  const ws = new WebSocket('<%= ctx.urlFor('echo') %>');
  ws.onmessage = event => { document.body.innerHTML += event.data };
  ws.onopen    = event => { ws.send('Hello World!') };
</script>
`;

但 mojo.js 并不是真正的单文件应用程序。作为一个非常传统的超媒体框架和 Mojolicious 的精神继承者,它鼓励开发者采用 MVC 模式,同时还支持这些单文件应用程序进行原型化。

上文提到了 mojo.js 与 Mojolicious 的渊源。事实上,mojo.js 的诞生与 Perl6(已被重命名为 Raku)也有一定关系。当 Perl6 发布时,官方就已计划将 Mojolicious 移植到除 Perl5 外的更多语言。此时,JavaScript 不断发展,添加了 ES6 classes, async/await, ES modules, 箭头函数, const/let 关键字等特性。Node.js 也将 JavaScript 带到了服务器端。在语言层面上,Perl 和 JavaScript 之间有着非常密切的关系,凭借着这些契机,Mojolicious 团队创建了 mojo.js 项目。

Mojolicious 开发团队表示,打造 mojo.js 并不是意味着他们要放弃 Mojolicious,因为目前仍有许多非常喜欢 Perl 的开发,他们会继续开发和维护 Mojolicious。

 

优秀的个人博客,低调大师

微信关注我们

原文链接:https://www.oschina.net/news/200402/mojojs-1-released

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
优质分享Android(本站安卓app)

优质分享Android(本站安卓app)

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Eclipse(集成开发环境)

Eclipse(集成开发环境)

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK)。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。