编程语言应用

首页 » 常识 » 预防 » Bun我可以用它做什么
TUhjnbcbe - 2023/9/4 21:18:00
北京治疗白癜风专科 https://wapyyk.39.net/hospital/89ac7_map.html

什么是Javascript世界中的新热点Bun?为什么它这么快,我可以在我的项目中使用它吗?

近年来,Web开发领域发现,虽然超级风格化的网站和具有大量使用Javascript进行的非常丰富的交互的Web应用程序可能会吸引用户,但页面的加载时间对用户的影响可能要大一百倍。经验的角度。因此,人们付出了大量努力来减少网站的加载时间指标。许多框架和模式已经(重新)出现以提供解决此问题的方法,例如服务器端渲染和静态站点生成。

进入贾里德萨姆纳。Jarred注意到在Node.js中打印到控制台这样简单的操作非常慢。这是在Node.js和Rust中执行“Helloworld”程序所需时间的示例。

log.js

JavaScript

console.log(Helloworld!)

$timenodelog.jsHelloworld!nodelog.js0,13suser0,02ssystem%cpu0,total

log.rs

JavaScript

fnmain(){println!("Helloworld!");}

$rustclog.rs$time./logHelloworld!./log0,00suser0,00ssystem86%cpu0,total

Jarred说他对这个事实以及Javascript世界的其他现实非常困扰,比如必须选择和协调多种工具——运行时、捆绑器、转译器......他确信这不必是这个案子,他开始了一个人的旅程来建造Bun。

bun到底是什么?

Bun首先是一个Javascript运行时,如Node.js和Deno。它被设计成一个极快的Javascript运行时。但别担心,拥抱这个新的运行时并不意味着必须重构所有现有代码。Bun实现了大多数NodeAPI和WebAPI,例如fs、fetch、Buffer、WebSocket等等。此外,Bun还与大多数NPM包兼容,尽管它使用自己的包管理器,这也是为速度而构建的。

但Bun不仅仅是一个Javascript运行时,它还附带电池。它附带了Javascript项目中通常需要的所有工具:包管理器、捆绑器和转译器,不仅适用于Javascript,还适用于Typescript和开箱即用的JSX。此外,它还包括用于dotenv配置加载的本机实现和SQLite3客户端。

这是使用NPMv8.15和Bun包管理器v0.1.5安装常规大小的package.json的示例:

$timenpminstalladdedpackages,andauditedpackagesin3mnpminstall,14suser16,06ssystem92%cpu3:16,08total

$buninstallbuninstallv0.1.5packagesinstalled[9.70s]

但是bun怎么这么快?

Bun的速度可以用两个主要因素来解释:Javascript引擎的选择和原生实现的低级优化。

Node.js和Deno都使用V8Javascript引擎。虽然V8是为Chrome网络浏览器提供动力的出色引擎,但Bun选择了不惜一切代价产生最佳性能的选项。Jarred选择使用JavascriptCore引擎来构建Bun,这是为Webkit提供动力的引擎,它似乎在启动时以及在某些特定情况下表现更好。

另一个帮助将Bun优化到极致的决定是选择Zig作为其内置语言。Zig是一种没有垃圾收集器的低级编程语言,如C或Rust。虽然这两种语言可能是构建Bun的绝佳选择,但Zig有一些Jarred重视的独特功能,这最终导致他选择Zig而不是其他语言。首先,Zig没有隐藏的控制流,这使得它更容易确保在运行时不会意外调用辅助函数。此外,Zig有一个名为“CompTime”的功能。使用CompTime,您可以将一段代码标记为在编译时而不是执行时执行,从而节省可以从最终执行时间中划掉的任何宝贵时间。

使用bun

要使用Bun,首先使用以下命令安装它:

curl

1
查看完整版本: Bun我可以用它做什么