今天跟大家介绍一个最新开源的javaScript运行时:Bun。js。 刚开源不到一个月就获得了26。1kstar!看起来马上就会成为Node。js和Deno的一大竞争对手了! 和传统的Node。js这种传统的javaScript运行时不同,Bun。js直接内置了打包器、转译器、任务运行器和npm客户端,这意味着你不再需要WebpackRollupesbuildSnowpackParcelRomeswcbabel就可以直接运行TypeScript、JSX! 另外,Bun。js原生支持了数百个Node。js和WebAPI,包括约90的NodeAPI函数(fs、path、Buffer等)。 Bun。js的目标是可以在浏览器之外的其他地方运行世界上大多数JavaScript,为你未来的基础架构带来性能和复杂性的增强,并通过更好、更简单的工具提高开发者的生产力!性能表现如何? 服务端渲染:每秒处理HTTP请求数 加载一个巨大的sqlite表:每秒平均查询次数 FFI:每秒操作数 为啥这么快? 和Node。js、Deno不同,Bun。js并没有基于V8引擎,它直接选择了JavaScriptCore引擎,它的执行速度往往要比V8等更传统引擎要快。 另外,Bun。js是用一种具有手动内存管理的低级编程语言ZIG编写的,对内存的低级控制、没有隐藏的控制流可能就是它性能非常好的秘诀。 Bun。js的大部分内容都是完全从零开始编写的,包括JSXTypeScript转译器、npm客户端、打包器、SQLite客户端、HTTP客户端、WebSocket客户端等等。有哪些能力?WebAPI:对fetch、WebSocket、ReadableStream等API都提供了内置支持Node。js模块:Bun实现了Node。js的模块解析算法,同时支持ESM和CommonJS,但Bun内部使用ESM。支持转译大量文件类型,你可以直接运行TypeScript、JSX,甚至支持各种tsconfig。json中的配置。 Input Loader Output 。js JSXJavaScript 。js 。jsx JSXJavaScript 。js 。ts TypeScriptJavaScript 。js 。tsx TypeScriptJSXJavaScript 。js 。mjs JavaScript 。js 。cjs JavaScript 。js 。mts TypeScript 。js 。cts TypeScript 。js 。toml TOML 。js 。css CSS 。css 。env Env NA 。 file stringBun。write使用最快的系统调用,实现写入、复制、管道、发送和克隆文件。自动加载环境变量。env文件,不需要再require(dotenv)。load()附带一个内置的快速SQLite3客户端bun:sqliteBun。js实现了大部分NodeAPI(NAPI),大部分Node。js原生模块都可以正常工作。bun:ffi可以使用低成本的外部函数接口从JavaScript调用本机代码(据测试比napi快5倍、比Deno快100倍) 原生支持不断增长的Node。js核心模块列表以及全局变量,例如Buffer和process试用一下 安装BunCLI:curlhttps:bun。shinstallbash Bun的HTTP服务器基于Request和Response等Web标准构建:http。jsexportdefault{port:3000,fetch(request){returnnewResponse(Hi,ConardLi!WelcometoBun!);},}; 用bun运行它:bunrunhttp。js 然后在浏览器中打开http:localhost:3000。 CLI命令:bunrun:可以直接运行JavaScript和TypeScript文件以及package。json中的scripts脚本。 根据测试,bun运行package。json脚本比npm运行package。json脚本快30倍。 CLI命令:buninstall:兼容npm的包管理器,使用最快的系统调用来复制文件。 根据测试,bun比npm的包安装速度快20倍。 CLI命令:bunwiptest:一个类似于Jest的测试运行器,用于内置到bun的JavaScript和TypeScript项目。 这样的bunjs有望成为替代node的一员。