Bun “全家桶” JavaScript 运行时

开源网站开源项目 24-05-05 09:03:50

Bun是采用Zig 语言编写的高性能 “全家桶” JavaScript 运行时,官方称其为 "all-in-oneJavaScript runtime"。Bun 提供了打包、转译、安装和运行 JavaScript & TypeScript 项目的功能,内置原生打包器 (native bundler)、转译器、task runner、npm 客户端,以及fetchWebSocket等 Web API。

Bun 是一个新的:

带有 Web API 的 JavaScript 运行时,内置fetchWebSocket等 API。bun 嵌入了 JavaScriptCore,它往往比 V8 等更流行的引擎更快且内存效率更高(尽管更难嵌入)

JavaScript/TypeScript/JSX 转译器

JavaScript 和 CSS 打包器

package.json 脚本的任务运行器

npm 兼容的包管理器

Bun 的 HTTP 服务器基于Request和Response等 Web 标准:

// http.jsexport default {  port: 3000,  fetch(request) {    return new Response("Welcome to Bun!");  },};

Bun 完全从零开始构建,对标的项目是 Node.js 和 Deno 这类现代化的 JavaScript 运行时。

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

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

内置了诸如 fetch、WebSocket 和 ReadableStream 等Web API

node_modules bun 实现了 Node.js 的模块解析算法,因此你可以在 Bun 中使用 npm 包。支持ESM和CommonJS,但Bun内部使用ESM

在 Bun中,每个文件都是转译的。TypeScript和JSX就可以使用

Bun支持来自tsconfig.json文件的 "paths"、"jsxImportSource "等。

Bun.Transpiler Bun的JsX和TypeScript转译器在Bun中作为API可用。

使用Bun.write提供的最快系统调用来写入、复制、管道、发送和克隆文件。

Bun自动从.env文件加载环境变量。不再需要 require("dotenv").config()

Bun提供了一个快速的SQLite3客户端,内置bun:sqlite。

Node-API Bun实现了大部分的Node-API(N-API)。许多Node.js原生模块都可以使用

bun:ffi 使用Bun的低开销外部函数接口从JavaScript调用 native code。

node:fs node:path Bun原生支持越来越多的Node.js核心模块,以及像Buffer和process这样的globals。

性能测试结果对比:

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

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

[Bun “全家桶” JavaScript 运行时]相关推荐
QtiPlot 科学绘图软件

QtiPlot 科学绘图软件

QtiPlot软件是可运行于多个平台(windows && Linux)的开源免费的科学绘图软件。 从功能上讲,Qt……...

Kibo 键盘事件处理的JS库

Kibo是一个简单的用于处理键盘事件的Javascript工具库。这个Javascript类库的特点是,它不但能监听普通的……...

smash 类 unix 内核

smash 类 unix 内核

smash 是一个类 Unix 的内核,实现了基于分段和分页的内存管理,单个进程最大 4GB 虚拟地址空间,支持 mi……...

JsPlumb 流程图设计器

JsPlumb 流程图设计器

jsPlumb是一个比较强大的绘图组件,它提供了一种方法,主要用于连接网页上的元素。在现代浏览器中,它使……...

Tornado Web 服务器

Tornado是使用Python开发的全栈式(full-stack)Web框架和异步网络库,最早由Friendfeed开发。通过使用非……...

今日开源
  1. Kity 基于 SVG 的矢量图形库

    Kity 基于 SVG 的矢量图形库

    Kity 是一个基于 SVG 的矢量图形库,帮助你快速在页面上创建和使用矢量元素。 面向对象的接口风格 在 Kity 里,所有图形,以及交换的数据,都是以强类型的对象出现的,可以非常方便地使用和拓展它们。 丰富的图形……

    开源软件 2024-05-18

  2. Panorama Facebook Paper 倾斜效果

    Panorama Facebook Paper 倾斜效果

    Panorama 实现了来自 Facebook Paper 应用里的倾斜姿态/用户体验效果。 要求: iOS 6.0 or higher ARC Core Motion

    开源软件 2024-05-18

  3. Broadway 基于 JavaScript 的 H.264 解码器

    Broadway 旨在在浏览器上原生解码 H.264 视频,基于 Google 在 Android 中使用的 H.264 解码器。 Mozilla 开发者只是简单地将 C 语言编写的 Android H.264 解码器,使用Emscripten编译器翻译成 JavaScript 代码。……

    开源软件 2024-05-18

返回顶部小火箭