Porffor:JS 运行时新趋势!体积从 90M 压缩到 100KB
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
写一行简单的 这是JavaScript十几年来绕不开的痛点。 拿Node.js举例,哪怕逻辑极简的应用,打包之后动辄几十MB甚至上百MB。放到真实业务里,各种短板就暴露出来:Serverless冷启动缓慢、边缘计算资源吃紧、IoT嵌入式设备扛不住开销、CLI工具分发下载成本高,就连WebAssembly产物也容易体积膨胀。 长久以来,开发者的解法很直接:换语言。用Go、Rust、C++,编译出独立二进制文件,不依赖虚拟机,分发运行都干净利落。 但现在出现了一个脑洞很大的实验项目,试图打破固有认知:让JavaScript直接编译成轻量二进制程序,拥有接近C语言的交付能力。它就是 Porffor。
它不是又一款JS运行时,也不和Bun、Deno抢市场,定位是JavaScript AOT提前编译器。
传统链路:
JS为什么离不开Runtime很多人会疑惑,JS为什么一直需要引擎陪跑? 以Node执行为例,运行 一个小小的JS命令行工具,发布包要把业务代码、Node运行时、各类依赖全部打包进去,体积直接暴涨。 这也是Go、Rust做CLI工具更受欢迎的核心原因:编译完成就是单个可执行文件,不需要额外虚拟机。而JavaScript,始终甩不开Runtime这个包袱。 Porffor究竟是什么官方定义:Porffor是实验性编译器,可以把JavaScript、TypeScript编译为WebAssembly以及平台原生二进制文件。 这里有一个关键区别:市面上不少JS转Wasm工具,本质是把完整JS解释器打包进Wasm产物,输出文件依旧巨大。 Porffor不走打包引擎这条路,它是真正对JS源码做静态编译,不会塞入整套运行时,文件体积得以断崖式下降。 官方放出的数据极具冲击力:传统JS打包后的原生程序约90MB,经Porffor编译后产物可以做到小于100KB,体积压缩近千倍。
想象一下,从前JS写的小工具,要下载几十MB资源、等待Runtime初始化启动;未来几十KB的文件,双击就直接运行。对于边缘节点、Serverless、嵌入式设备、轻量CLI场景,这无疑充满想象空间。 编译体验也高度贴近系统语言。 Rust执行 就能直接输出exe或者对应系统的原生可执行程序。更方便的是,原生支持TypeScript输入,不需要额外配置tsconfig,也不用引入打包工具做预处理。 除了本地原生二进制,它也支持输出Wasm: 这套能力打开了不少新可能性:
和Bun、Deno有什么不同很多人第一反应:这是不是Node的替代品?其实三者方向完全不一样。
Bun追求打造速度更快的JavaScript Runtime,目标替代Node; Deno重新设计Runtime,解决Node遗留的历史问题; Porffor根本不做运行时,目标是让JS不再依赖Runtime,直接编译输出二进制。 现阶段还不能上生产一定要清醒认识:Porffor目前依旧属于实验项目,还没到生产可用阶段,官方也在持续补齐JavaScript标准兼容性。 原因不难理解:JavaScript语言本身过于灵活。动态类型、eval、原型链、运行时反射这些特性,对于静态AOT编译来说,每一项都是巨大挑战。现阶段它更偏向前沿技术探索,不能拿来直接替换Node。 背后值得关注的行业趋势JS最大的优势,是开发效率高、生态庞大、上手门槛低;短板则是依赖运行环境、包体积臃肿、启动慢。 而Rust、Go的优势恰恰就是编译输出独立程序,部署简单轻便。Porffor代表了一种趋势:JavaScript未来或许可以同时兼顾优秀开发体验,以及接近系统语言的部署形态。 过去几年行业争论,大多围绕Runtime性能:Node对比Bun,Node对比Deno。但Porffor抛出另一个命题:未来的竞争,未必是谁的Runtime跑得更快,而是能不能尽可能摆脱Runtime本身。 编程语言的进化路径很清晰:解释执行 → JIT即时编译 → AOT提前编译,如今JavaScript正在尝试跨入下一阶段。 写在最后Porffor暂时不会颠覆当下前端、后端的开发模式,但它完成了一次极具价值的验证:过去大家觉得几乎不可能的事,JavaScript也能编译成轻量原生二进制文件。 90MB压缩至100KB、JS/TS直接输出Wasm、输出单文件可执行程序,这些探索短期内不会彻底改变现有开发习惯,却打开全新想象空间。 未来JavaScript的舞台,或许不再局限浏览器与服务器,还可以跑在边缘节点、嵌入式芯片,跑在一切能运行C程序的硬件之上。 Porffor官网:https://porffor.dev/ 阅读原文:点击这里 该文章在 2026/8/27 18:42:03 编辑过 |
关键字查询
相关文章
正在查询... |