前端大咖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生态方面,将会迎来井喷式的发展,并发挥出巨大的作用。

相关推荐
小兵张健2 小时前
两个配置让 Codex 效率翻倍
人工智能·程序员·github copilot
雨中飘荡的记忆3 小时前
Multi-Agent + Skills + Spring AI 构建自主决策智能体
后端·spring
whinc3 小时前
🚀 两年小程序开发,我把踩过的坑做成了开源 Skills
前端·微信小程序·ai编程
我叫黑大帅4 小时前
Go 语言并发编程的 “工具箱”
后端·面试·go
sure2824 小时前
React Native中创建自定义渐变色
前端·react native
用户8356290780514 小时前
Python 实现 PowerPoint 形状动画设置
后端·python
用户908324602735 小时前
Spring Boot 缓存架构:一行配置切换 Caffeine 与 Redis,透明支持多租户隔离
后端
KKKK5 小时前
SSE(Server-Sent Events)流式传输原理和XStream实践
前端·javascript
tyung5 小时前
zhenyi-base 开源 | Go 高性能基础库:TCP 77万 QPS,无锁队列 16ns/op
后端·go