历经一年多的开发,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...