-
• bun.js 是什么,如何用?

bun.js 是什么,如何用?
Bun是Node.js和Deno的竞争对手,是一个新的JavaScript运行时
官网网址:https://bun.sh/
Bun.js 是一个现代的 JavaScript 运行时环境,类似于 Node.js 和 Deno,它专注于提供更快的启动速度、更高的性能、更小的内存占用以及更好的开发者体验。
Bun.js 使用 JavaScriptCore 引擎(该引擎同样被用于 Safari 浏览器),并且整个运行时由 Zig 语言编写,这种语言具有手动内存管理和本机线程处理能力,从而实现了一个轻量且高效的运行环境。
历史:Bun在Node和Deno中的位置
Ryan Dahl于2009年发布了Node.js。虽然它不是第一个「服务器端JavaScript运行时,」但Node.js迅速崭露头角「。」2023年发布了第20版「,」Node.js拥有最大的开发生态系统,拥有320万个模块,每周下载量接近5000亿次。
2020年,Ryan Dahl发布了 Deno,「它是“noDe”的一种混合体」 ,旨在现代化JavaScript开发并解决Node.js安全性、API兼容性、工具和模块管理方面的传统问题。虽然Deno受到了积极的评价,但尚未挑战Node的主导地位。
2022年,Jarred Sumner发布了Bun,因为他在开发Next.js项目时对Node.js的速度感到不满。
Bun使用JavaScriptCore引擎,该引擎驱动WebKit浏览器,如Safari,而不是Node.js、Deno和Chrome中使用的V8引擎。
Bun运行时侧重于性能和开发人员体验。其目标是消除速度慢和复杂性,而不是放弃JavaScript的所有优点。
Bun可以比Node.js更快地发展,后者必须与现有的JavaScript和npm生态系统保持(基本)向后兼容。
与Deno一样,Bun对JavaScript和TypeScript本地支持,无需第三方转译器或配置。
Bun正在成为Node.js、Deno、无服务器运行时、构建和测试工具的即插即用替代品。
它可以替代npm、npx、yarn、TypeScript编译器、dotenv、nodemon、pm2、Webpack、Babel和Jest,为在单一平台上开发应用程序提供了一个完整的多合一工具箱。
Bun版本1.0发布「于2023年9月发布」
“Bun”这个名字有什么出处
来历?“Bun”这个名字的起源不清楚,标志也没有帮助!
它可能与食物、蓬松的兔子、“bundle”或者可能是一个简短、容易记住的名字有关,而且「bun.sh」域名也可用。
Bun.js 好处
速度快
通过优化设计,Bun 可以比 Node.js 更快地启动。
Node.js和Deno使用Chrome的 V8 JavaScript引擎。 Bun选择了JavaScriptCore引擎,该引擎驱动WebKit浏览器,如Safari。
Bun本身是用「Zig」编写的,这是一种具有手动内存管理和本机线程处理能力的低级编程语言。
其结果是一个轻量级运行时,具有更小的内存占用、更快的启动时间,以及在某些(基准测试)条件下性能可以比Node.js和Deno快四倍。
内置工具
提供了全套工具集,如打包器、转码器、以及自己的包管理器,减少了对外部工具链的依赖。
Bun 原生支持 TypeScript,无需额外配置即可运行 TypeScript 代码。
与Deno一样,Bun对JavaScript和「TypeScript」都有本机支持,无需第三方转译器或配置。
它还支持.jsx和.tsx文件,以将类似HTML的标记转换为本机JavaScript。还提供了运行WebAssembly编译的.wasm文件的实验性支持。
高性能
基于扩展的 JavaScriptCore 引擎和其他底层优化,Bun 在一些基准测试中的性能表现优于其他 JavaScript 运行时。
在内部Bun使用 ES模块,支持顶级await,翻译CommonJS,并实现了Node的node_modules解析算法。Bun将模块缓存到~/.bun/install/cache/中,并使用硬链接将它们“复制”到项目的node_modules目录中。
因此,您系统上的所有项目都将引用同一库的单个实例,这减少了磁盘空间需求并提高了安装性能。(请注意,macOS安装保留本地版本以提高速度。)
自动安装和运行包
尽管不是直接基于 V8 引擎,但 Bun 实现了大部分 Node.js API,使得许多现有的 Node.js 应用程序能够轻松迁移至 Bun 平台。
Bun支持Node的package.json,与npm等效命令,以及bunx,这是一个类似npx的选项,可以在单个命令中自动安装和运行包。例如:
bunx cowsay "Hello, world!"
其他
bun init与npm init 相同,用于创建空项目,但您还可以使用 bun create <template> <destination>
来模板化新项目,其中 <template>
是一个官方包、GitHub存储库或本地包。例如,要创建一个新的Next.js项目:
bun create next ./myapp
Bun包含一个 bundler,用于将所有依赖项导入单个文件,并且可以针对Bun、Node.js和客户端JavaScript。这减少了使用esbuild或Rollup等工具的需求:
bun build ./index.ts —outdir ./out
大多数命令行界面选项都可以通过JavaScript API使用,因此可以创建复杂的构建脚本,而无需专门的任务运行器。
以下是与上述命令相同的构建:
await Bun.build({
entrypoints: ['./index.ts'],
outdir: './out',
})
Bun具有标准的测试运行器「,类似于」Deno「和」Node.js 20「。运行」bun test会执行如下命名的脚本:
*.test.{js|jsx|ts|tsx}
*_test.{js|jsx|ts|tsx}
*.spec.{js|jsx|ts|tsx}
*_spec.{js|jsx|ts|tsx}
无需nodemon「等工具」,因为bun「具有」–watch「标志」,可在修改依赖文件时重新启动脚本或测试。重新启动速度如此之快,以至于可以在每次按键时进行实时重新加载。(是否实用而不会分散注意力是另一回事!)
实时重新加载不太美观!(「警告:内容闪烁!」) 「查看原始动画GIF。」
类似的—hot「模式」也可用,Bun会监视更改并重新加载模块。所有文件都将重新评估,但全局状态保持不变。
项目.env「文件中包含的环境变量会自动加载和解析,使它们在Bun应用程序中可用,因此无需使用」dotenv等包。
除了自己的Bun APIs,用于网络、文件访问、子进程等方面,Bun还支持:
「Web API」:https://bun.sh/docs/runtime/web-apis
例如「fetch」、「URL」、「blob」、「WebSocket」、「JSON」、「setTimeout」和事件。
Node.js兼容性API:
例如 「console 」、「assert」、「dns」、「http」、「path」、「stream」和「util」,以及全局变量,包括「__dirname」 和「__filename」。
Bun声称已经完全实现了最常用API的90%,尽管您应该仔细检查与项目特定的API。
最后,Bun具有本机的SQLite3客户端—— bun:sqlite,这可以减少某些项目中所需的依赖项数量。
使用 Bun.js 步骤:
要使用 Bun.js,请按照以下步骤:
安装 Bun:
-
• 由于 Bun.js 当前仍处于发展阶段,最新的安装指南应参考其官方网站 https://bun.sh 或 GitHub 仓库。
-
• 根据官方提供的命令行工具,下载并安装 Bun。
创建并运行项目:
-
• 创建一个新的 Bun 项目,可能需要初始化项目文件夹,创建
bun.json
或类似的配置文件。 -
• 运行 Bun 脚本,就像在 Node.js 中那样,例如:
bun index.js
,其中index.js
是你的主入口文件。
包管理:
-
• 使用 Bun 内置的包管理器来安装依赖,具体命令可能会类似
bun add package-name
。
开发与调试:
-
• 利用 Bun 提供的工具进行开发、构建、测试和部署操作。
由于 Bun.js 仍在快速发展中,实际的使用细节和命令可能会随着版本更新而变化,因此建议查阅最新文档以获取最准确的操作指导。
如何安装和使用 Bun.js
由于Bun.js是一种新兴的JavaScript运行环境,具体的安装和使用步骤可能会随着项目的更新而变化。
以下是安装Bun.js并创建一个简单HTTP服务器的示例步骤:
安装Bun.js
在macOS、Linux或WSL上安装:
curl -fsSL https://bun.sh/install | bash
如果Bun.js有针对Windows系统的实验版本,则可能需要从其GitHub Release页面下载预编译的二进制文件安装,或者等待官方文档提供适用于Windows的安装命令。
在Windows上安装(基于较早的信息):
-
1. 首先安装Chocolatey(Windows平台的包管理器)。
-
2. 使用Chocolatey安装Bun.js(具体命令可能随Bun.js更新而变)。
或者,直接从GitHub Releases页面下载预编译的Windows版Bun可执行文件并将其添加至系统路径。
使用Bun.js创建一个简单的HTTP服务器
创建一个名为server.bun
的文件:
// server.bun
import { serveHTTP } from 'bun';
async function main() {
const server = await serveHTTP({
port: 3000,
handler: async (req, res) => {
res.setHeader('Content-Type', 'text/plain');
res.end('Hello, World! from Bun.js Server');
},
});
console.log(`Server is listening on http://localhost:3000`);
}
main();
这个脚本会启动一个监听3000端口的HTTP服务器,每当有请求到来时,服务器会返回一个简单的“Hello, World!”响应。
运行服务器
确保Bun已经正确安装,然后在包含server.bun
文件的目录下启动服务器:
bun run server.bun
这样,你应该能在本地主机的3000端口看到运行的服务器。访问http://localhost:3000
应该能看到“Hello, World! from Bun.js Server”的输出。
请注意,上述命令和API细节可能会随着Bun.js的发展而有所调整,建议查阅最新的官方文档获取准确信息。
参考文档:
-
• https://blog.csdn.net/yuleiming21/article/details/133644617
原文始发于微信公众号(前端爱好者):只能使用npm?不是还有bun.js吗?
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/266978.html