只能使用npm?不是还有bun.js吗?

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

      • • 历史:Bun在Node和Deno中的位置

      • • “Bun”这个名字有什么出处

      • • Bun.js 好处

        • • 速度快

        • • 内置工具

        • • 高性能

        • • 自动安装和运行包

        • • 其他

      • • 使用 Bun.js 步骤:

        • • 安装 Bun

        • • 创建并运行项目

        • • 包管理

        • • 开发与调试

    • • 如何安装和使用 Bun.js

      • • 安装Bun.js

        • • 在macOS、Linux或WSL上安装:

        • • 在Windows上安装(基于较早的信息):

      • • 使用Bun.js创建一个简单的HTTP服务器

      • • 运行服务器

只能使用npm?不是还有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. 1. 首先安装Chocolatey(Windows平台的包管理器)。

  2. 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({
    port3000,
    handlerasync (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

(0)
李, 若俞的头像李, 若俞

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!