他来了!性能吊打 Node.js 和 Deno 的新一代 javaScript 运行时!

今天跟大家介绍一个最新开源的 javaScript 运行时:Bun.js

a1e69710b36f7a421f943336bc23c78f.png

刚开源不到一个月就获得了 19.5k star!看起来马上就会成为 Node.jsDeno 的一大竞争对手了!

和传统的 Node.js 这种传统的 javaScript 运行时不同,Bun.js 直接内置了打包器、转译器、任务运行器和 npm 客户端,这意味着你不再需要 Webpack/Rollup/esbuild/Snowpack/Parcel/Rome/swc/babel 就可以直接运行 TypeScript、JSX

另外,Bun.js 原生支持了数百个 Node.jsWeb API,包括约 90%Node-API 函数(fs、path、Buffer 等)。

Bun.js 的目标是可以在浏览器之外的其他地方运行世界上大多数 JavaScript,为你未来的基础架构带来性能和复杂性的增强,并通过更好、更简单的工具提高开发者的生产力!

性能表现如何?

服务端渲染:每秒处理 HTTP 请求数

f2de964e58166d12de61e436549b7cfd.png

加载一个巨大的 sqlite 表:每秒平均查询次数

5f9306d6c9b23475835d3f6bf6c7446a.png

FFI:每秒操作数

f687711cc92118024be81f0e864b8685.png

为啥这么快?

Node.js、Deno 不同,Bun.js 并没有基于 V8 引擎,它直接选择了 JavaScriptCore 引擎,它的执行速度往往要比 V8 等更传统引擎要快。

37e87cce6d8d1959df7fbe4433429678.png

另外,Bun.js 是用一种具有手动内存管理的低级编程语言 ZIG 编写的,对内存的低级控制、没有隐藏的控制流可能就是它性能非常好的秘诀。

03cd49f11ca84c892f994d3f84a1f031.png

Bun.js 的大部分内容都是完全从零开始编写的,包括 JSX/TypeScript 转译器、npm 客户端、打包器、SQLite 客户端、HTTP 客户端、WebSocket 客户端等等。

有哪些能力?

  • Web API:对 fetch、WebSocket、 ReadableStreamAPI 都提供了内置支持

  • Node.js 模块:Bun 实现了 Node.js 的模块解析算法,同时支持 ESMCommonJS,但 Bun 内部使用 ESM

  • 支持转译大量文件类型,你可以直接运行 TypeScript、JSX,甚至支持各种 tsconfig.json 中的配置。

a7a320dd1eee559a19b054e0d84eaabb.png
  • Bun.write 使用最快的系统调用,实现写入、复制、管道、发送和克隆文件。

  • 自动加载环境变量 .env 文件,不需要再 require("dotenv").load()

  • 附带一个内置的快速 SQLite3 客户端 bun:sqlite

  • Bun.js 实现了大部分 Node-API (N-API),大部分 Node.js 原生模块都可以正常工作。

  • bun:ffi 可以使用低成本的外部函数接口从 JavaScript 调用本机代码(据测试比 napi 快 5 倍 、比 Deno100 倍)

fb6b927de15e6a6d0b191c3cd719c072.png
  • 原生支持不断增长的 Node.js 核心模块列表以及全局变量,例如 Bufferprocess

试用一下

安装 Bun CLI

curl https://bun.sh/install | bash

BunHTTP 服务器基于 RequestResponseWeb 标准构建:

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

bun 运行它:

bun run http.js

然后在浏览器中打开 http://localhost:3000

  • 查看更多示例:https://github.com/Jarred-Sumner/bun/tree/main/examples

  • 查看官方文档:https://github.com/Jarred-Sumner/bun#Reference

CLI 命令:bun run:可以直接运行 JavaScriptTypeScript 文件以及 package.json 中的 scripts 脚本。

根据测试,bun 运行 package.json 脚本比 npm 运行 package.json 脚本快 30 倍。

CLI 命令:bun install:兼容 npm 的包管理器,使用最快的系统调用来复制文件。

cd295051161f98fec049a71d5208c8a1.png

根据测试,bun 比 npm 的包安装速度快 20 倍。

CLI 命令:bun wiptest:一个类似于 Jest 的测试运行器,用于内置到 bunJavaScriptTypeScript 项目。

Bun 目前还处于 beta 阶段,距离生产环节还有一段路要走,大家觉得它的未来究竟如何呢?

在看点这里⬇️⬇️⬇️

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值