历经一年多的开发,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 解析器。
基于
class
、
async
/
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。
展开阅读全文
本站新闻禁止未经授权转载,违者依法追究相关法律责任。授权请联系:
oscbianji#oschina.cn
本文标题:
Web 框架 mojo.js 1.0 正式发布,从 Perl 到 Node.js
本文地址:
https://www.oschina.net/news/200402/mojojs-1-released
MHV5IC1810NR2 1805-1990 MHz, 5 W Avg., 28 V GSM/GSM EDGE RF LDMOS Wideband Integrated Power Ampli...
浅说TCP状态机制
精彩回顾 | 来看 QTF 量化科技嘉年华上的 DolphinDB
ARCHIVED - MRF7S19080HR3, MRF7S19080HSR3 1930-1990 MHz, 24 W Avg., 28 V Single W-CDMA Lateral N-C...
MHW1910-1 1930-1990 MHz, 10 W RF Power LDMOS Amplifier - Archived
MW4IC915MBR1, MW4IC915GMBR1 860-960 MHz, 15 W, 26 V GSM/GSM EDGE, N-CDMA RF LDMOS Wideband Integr...
DC-DC Boost Converter Vo=800V Io=20A : BSM120C12P2C201
Converting Earlier Versions of CodeWarrior for StarCore DSPs Projects to Version 10.1.8
Full bridge current driven vertical deflection booster
TiDB 7.1 LTS 发版:为关键业务提供业务稳定性和多租户场景支持
HCMOS Microcontroller Unit TECHNICAL DATA - Data Sheet
Buck/boost HS-CAN/dual LIN system basis chip
NLOS环境下基于WSN的救援人员定位系统研究
联想贾朝晖:全面、体验、开放,2023联想创新开放日展现三大亮点
i.MX 6 Yocto Project L3.14.38_6UL Patch Release Notes - Release Notes
MRF5S21090HR3, MRF5S21090HSR3, 2110-2170 MHz, 19 W Avg., 28 V, 2 x W-CDMA Lateral N-Channel RF Po...
CMOS MEMS集成方法的优点与弊端分析
SiC MOSFET为什么会使用4引脚封装
N-channel single gate MOSFET
Converting Demos in Standard Software Drivers for HC908 Derivatives
NXP
®
immobilizer system solutions: Reduced system cost for high-security immobili...
前端开发报表工具所必须的三大能力
OSLON® PURE 1010 - General information
关于Cadence 版图 Virtuoso Simulation
MRF9060MR1, MRF9060MBR1 945 MHz, 60 W, 26 V Lateral N-Channel Broadband RF Power MOSFETs - Archived
PostgreSQL 每周新闻 2023-7-12
Smart Card reader application with TDA8029 Mask 06 and Mask 07
铜锁支持大数运算硬件加速机制
plastic thermal enhanced low profile quad flat package; 176 leads; body 24 x 24 x 1.4 mm; exposed...
阿里云 Alex Chen:数据就像浩瀚的宇宙
OSLON SSL 150 - GH_CSHPM1-24_Productpicture
Utilizing Extra FC Credits for PCI Express Inbound Posted Memory Write Transactions in PowerQUICC...
硬件伺服控制芯片TMC4671电流环速度环位置环PI配置方法
AN4458, Using the Freescale FXOS8700CQ Accelerometer and Magnetometer Vector-Magnitude Function -...
MHW1810-1, MHW1810-2 1805-1880 MHz, 10 W RF Power LDMOS Amplifiers - Archived
KaiwuDB 资深解决方案专家周幸骏:打造核心时序引擎,释放数据新价值
爱奇艺大数据加速:从Hive到Spark SQL
Boost型有源功率因数校正电路的仿真与实验
当 GraphQL 遇上图数据库,便有了更方便查询数据的方式
Implementing an IEEE 1588 node on K60 MCU w/ MQX RTOS
基于 DTS 同步 MySQL 全增量数据至 CKafka,构建实时数仓的最佳实践
MRF7S18125BHR3, MRF7S18125BHSR3 1930-1990 MHz, 125 W CW, 28 V GSM, GSM EDGE Lateral N-Channel RF ...
走进蚂蚁集团刚刚开源的流式图计算技术
ARCHIVED - AFT09H310-03SR6, AFT09H310-04GSR6 920-960 MHz, 56 W Avg., 28 V RF Power LDMOS Transist...
Running NXP
®
IEEE™ 802.15.4 Boards on MAC OS X Based Computers
ARCHIVED - MWE6IC9080NR1, MWE6IC9080GNR1, MWE6IC9080NBR1 865-960 MHz, 80 W CW, 28 V GSM, GSM EDGE...
在PG数据库中如何实现可以查看表的创建时间?
Philips Semiconductors LDMOS Broadcast Drivers; Equivalent Circuits
国际新闻:PostgreSQL 16 Beta 2发布!
Bosch Controller Area Network (CAN) Version 2.0 Protocol Standard
深入分析Go语言与C#的异同
帮您了解CDN节点如何做到访问加速与安全防护
MW4IC001NR4 800-2170 MHz, 900 mW, 28 V W-CDMA RF LDMOS Wideband Integrated Power Amplifiers
以科技创新驱动高质量发展,天翼云操作系统获国资委权威认证!
场景探索|文化数字化、证书可信任,区块链打开多元数字营销新场景
OSLON Black Flat - KW H5L531_Productpicture
Low-Cost, 3-Phase, AC Motor Control System with Power Factor Correction Based on MC68HC908MR32
Addendum to MC68HC05P9 HCMOS Microcontroller Unit Technical Data - Data Sheet
OSLON Black Flat - KW H2L531.TE
Use of OSC2/XTAL as a Clock Output on Freescale Semiconductor Microcontrollers
GPS, LNA, Sensitivity, Jamming, Cohabitation, TTFF; Global Position System Low Noise Amplifier
基于Kaldi的语音识别引擎后端架构设计
The basic principles of Electrical Overstress (EOS)
MHL9838 800-925 MHz 8.0 W, 31 dB RF Linear LDMOS Amplifier - Archived
MC68HC08RC16 HCMOS Microcontroller Unit Technical Data
厉害了!“数文链”获星火杯“最具商业价值”振兴奖
AN3769: Using the Engine Position (CRANK and CAM) eTPU Functions – Application Note
一小时快速拆解 Milvus 2.2.9
ARCHIVED - MMRF1017NR3 720-960 MHz, 80 W Avg., 28 V Airfast
®
RF Power LDMOS Transistor...
MRF5S19090HR3, MRF5S19090HSR3 1990 MHz, 18 W Avg., 28 V, 2 x N-CDMA Lateral N-Channel RF Power MO...
Interconnecting Two MSC8101ADS Boards Across a 60x-Compatible Bus to the Host Interface
ARCHIVED - MRF6VP3450HR6, MRF6VP3450HR5, MRF6VP3450HSR6, MRF6VP3450HSR5 860 MHz, 450 W, 50 V Late...