Bun “全家桶” JavaScript 运行时开源项目

我要开发同款
白开水不加糖2022年08月30日
123阅读
开发技术Zig
所属分类浏览器/JS引擎、Web应用开发
授权协议MIT

作品详情

Bun 是采用 Zig语言编写的高性能“全家桶”JavaScript运行时,官方称其为"all-in-one JavaScriptruntime"。Bun提供了打包、转译、安装和运行JavaScript&TypeScript项目的功能,内置原生打包器(nativebundler)、转译器、taskrunner、npm客户端,以及 fetch、WebSocket等WebAPI。

Bun是一个新的:

带有WebAPI的JavaScript运行时,内置fetch、WebSocket等API。bun嵌入了JavaScriptCore,它往往比V8等更流行的引擎更快且内存效率更高(尽管更难嵌入)JavaScript/TypeScript/JSX转译器JavaScript和CSS打包器package.json脚本的任务运行器npm兼容的包管理器Bun的HTTP服务器基于 Request 和 Response 等Web标准:

//http.jsexportdefault{port:3000,fetch(request){returnnewResponse("WelcometoBun!");},};Bun完全从零开始构建,对标的项目是Node.js和Deno这类现代化的JavaScript运行时。

Bun旨在替代当前的JavaScript和TypeScript应用程序或脚本,原生实现了数百个Node.js和WebAPI,包括约90%的 Node-API 函数(nativemodules)、fs、path、Buffer等。

Bun的目标是在浏览器之外运行世界上大多数JavaScript,为未来的基础架构带来性能和复杂性的增强,并通过更好、更简单的工具提高开发人员的生产力。

内置了诸如fetch、WebSocket和ReadableStream等WebAPInode_modulesbun实现了Node.js的模块解析算法,因此你可以在Bun中使用npm包。支持ESM和CommonJS,但Bun内部使用ESM在Bun中,每个文件都是转译的。TypeScript和JSX就可以使用Bun支持来自tsconfig.json文件的"paths"、"jsxImportSource"等。Bun.TranspilerBun的JsX和TypeScript转译器在Bun中作为API可用。使用Bun.write提供的最快系统调用来写入、复制、管道、发送和克隆文件。Bun自动从.env文件加载环境变量。不再需要require("dotenv").config()Bun提供了一个快速的SQLite3客户端,内置bun:sqlite。Node-APIBun实现了大部分的Node-API(N-API)。许多Node.js原生模块都可以使用bun:ffi使用Bun的低开销外部函数接口从JavaScript调用nativecode。node:fsnode:pathBun原生支持越来越多的Node.js核心模块,以及像Buffer和process这样的globals。性能测试结果对比:

▲服务器端渲染(每秒的HTTP请求数)

▲加载大型数据表(每秒的平均请求数)

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论