前端大咖mizchi不满Rust、TypeScript却爱上MoonBit

大家好,我是 MoonBit记者陈随易,今天给大家分享MoonBit生态贡献者 mizchi 和他的 js.mbt。

mizchi 是一名日本前端运维雇佣兵,是 Node.js 和 React 方面的专家,同时也是一个自由职业者。

他主要做的事情就是帮助客户解决前端性能问题,解决前端运维方面的疑难杂症。

在不满Rust过于底层,也不满于TypeScript/JavaScript太动态,不稳定的前提下,MoonBit恰到好处地解决了他在编程语言口味和习惯上的一些要求,并由此创建了一个MoonBit到JS的绑定库js.mbt。

下面就分享他对于编程语言的一些思考和抉择,以及js.mbt项目的作用和场景。

对于选择MoonBit,mizchi认为MoonBit解决了大部分他对于TypeScript的不满,在他看来,MoonBit有如下优势或特点:

  • Rust 风格的语法 静态类型 函数式语言
  • 模式匹配
  • 表达式导向 if match for-else 都是表达式
  • F# 风格的管道语法
  • 显式的副作用控制
  • 可作为代数数据类型使用的 enum
  • 通过 LSP 进行的补全与重构
  • 明确的异常处理
  • 异步处理(async)支持
  • 内置 JSON 类型 / JSON 模式匹配
  • 可选择 wasm/js/native/llvm 的后端
  • 内置测试运行器/快照
  • 生成代码体积小!

对于他来说,生成的代码体积小是最令人开心的事情,用 Moonbit 写 npm 库也变得现实。

在他看来,2025年的MoonBit与2024年的MoonBit相比,体感上面有了明显的进步:

  • 不再存在语言功能不足导致无论如何都写不出来的情况
  • LSP 工具链完善,拥有模式匹配和管道功能的语言都是顶尖的。
  • 尝试了 OCaml/Fsharp/Haskell,但只有 Moonbit 获得了与 TS(Node/Npm)/Rust(Cargo)同等级工具链的安心感

在AI大行其道的今天,MoonBit这种新兴语言,让他重新找回了编程的乐趣,也继续巩固了古法手工编程的硬实力,而不是被AI慢慢把编程实力瓦解。

js.mbt 就是他写的MoonBit到JavaScript/FFI的绑定,支持多种运行时和平台。

开源地址:https://github.com/mizchi/js.mbt

用法速览如下:

mbt 复制代码
// Create JavaScript objects
let obj = @js.from_entries([
  ("name", @js.any("Alice")),
  ("age", @js.any(30))
])

// Get property
let name = obj["name"]

// Set property
obj["age"] = @js.any(31)

// Call method
let result = obj._call("toString", [])

// Type casting
let age: Int = obj["age"].cast()

它在为 MoonBit 构建通往现实 JavaScript 世界的基础通道。

因为 JS 世界里大量能力都是对象式的、动态的、方法调用式的,如果没有这种桥接层,MoonBit 很难舒服地接入 JS 生态。

一门语言如果没有成熟的互操作层,就很难真的进入生产场景,而 js.mbt 在做的事情是:

  • 让 MoonBit 能调 JS
  • 让 MoonBit 能跑在主流 JS runtime 上
  • 让 MoonBit 能用 Web API / Node API
  • 让更高层 npm 绑定生态有基础可依赖

这类项目平时不一定最 显眼,但它往往是生态能不能长起来的关键零件。

它可以用来实现:

  • 用 MoonBit 写 Node.js 工具、CLI、脚本
  • 用 MoonBit 写浏览器端逻辑
  • 用 MoonBit 调用 Web 标准 API,做跨运行时开发
  • 作为更大 JS 生态绑定的基础层

从2022年到2026年,这是MoonBit发展的第4年,作为一门新兴的编程语言,其他语言4岁还在爬的时候,MoonBit已经实现了相当多的功能,包括了编译器、构建工具、包管理平台、异步编程、在线演练场、AI副驾驶、VSCode语言插件等等。

在官方和社区的推进下,相信今年在MoonBit生态方面,将会迎来井喷式的发展,并发挥出巨大的作用。

相关推荐
Lank_M31 分钟前
白底都占八成,PNG 为何只在图表页赢过 JPG
前端
张一凡9332 分钟前
给 Coding Agent 加一道"架构闸门":Jin 是如何做到"先审架构、再写代码、不漂移"的
前端·后端·agent
Linye33 分钟前
AI 写的 HTML 原型全是空壳?聊聊真实 DOM 交互避坑
前端·人工智能
Jvav练习生41 分钟前
AI Agent 总在关键时刻“失忆”翻车?一文讲透上下文工程(附可运行 Python 代码)
后端
ZANE42 分钟前
纯前端实现的 PDF 与图片互相转换工具技术实现
前端
leo在掘金1 小时前
只挂了11小时,5000台开发机被塞进SSH公钥
后端·架构
xjz18421 小时前
Rust 运算符优先级:括号不只用来改变顺序
后端
写码跑山的老艾1 小时前
为什么有了 MySQL,还要 Redis 和 Elasticsearch?从一件商品看数据系统的权衡
后端
对象存储与RustFS1 小时前
Jenkins 的构建产物别堆在控制器磁盘:用 RustFS 当它的 S3 工件仓库
后端·docker·云原生