Bun - 一个一体化的 JavaScript 和 TypeScript 工具包 -- 知识铺
Bun 是一个用于 JavaScript 和 TypeScript 应用程序的一体化工具包。它作为一个名为 bun
的可执行文件提供。
其核心是 Bun 运行时,这是一个快速的 JavaScript 运行时,旨在替代 Node.js。它是用 Zig 编写的,并由 JavaScriptCore 提供支持,大大减少了启动时间和内存使用量。
<span><span>bun run index.tsx </span><span># TS and JSX supported out of the box</span></span>
bun
命令行工具还实现了测试运行器、脚本运行器和与 Node.js 兼容的包管理器,所有这些都比现有工具快得多,并且可在现有 Node.js 项目中使用,几乎不需要任何更改。
<span><span>bun run start </span><span># run the `start` script</span></span>
<span><span>bun install </span><span><</span><span>pkg</span><span>></span><span> </span><span># install a package</span></span>
<span><span>bun build ./index.tsx </span><span># bundle a project for browsers</span></span>
<span><span>bunx cowsay </span><span>'</span><span>Hello, world!</span><span>'</span><span> </span><span># execute a package</span></span>
Bun 仍在开发中。使用它可以加快您的开发工作流程或在资源受限的环境(例如无服务器函数)中运行更简单的生产代码。我们正在致力于与现有框架实现更完整的 Node.js 兼容性和集成。加入 Discord 并观看 GitHub 存储库以密切关注未来的版本。
从下面的快速链接之一开始,或继续阅读以了解有关 Bun 的更多信息。
什么是运行时?
JavaScript(或更正式地说,ECMAScript)只是编程语言的规范。任何人都可以编写一个 JavaScript 引擎来摄取有效的 JavaScript 程序并执行它。目前使用的两个最流行的引擎是 V8(由 Google 开发)和 JavaScriptCore(由 Apple 开发)。两者都是开源的。
但大多数 JavaScript 程序并不是在真空中运行。他们需要一种访问外部世界来执行有用任务的方法。这就是运行时的用武之地。它们实现了额外的 API,然后这些 API 可供它们执行的 JavaScript 程序使用。
浏览器
值得注意的是,浏览器附带的 JavaScript 运行时实现了一组通过全局 window
对象公开的特定于 Web 的 API。浏览器执行的任何 JavaScript 代码都可以使用这些 API 在当前网页的上下文中实现交互或动态行为。
Node.js
同样,Node.js 是一个 JavaScript 运行时,可以在非浏览器环境(例如服务器)中使用。 Node.js 执行的 JavaScript 程序除了内置的之外还可以访问一组 Node.js 特定的全局变量,例如 Buffer
、 process
和 __dirname
用于执行操作系统级任务的模块,例如读/写文件( node:fs
)和网络( node:net
、 node:http
)。 Node.js 还实现了基于 CommonJS 的模块系统和解析算法,该算法早于 JavaScript 的本机模块系统。
Bun 被设计为 Node.js 的更快、更精简、更现代的替代品。
设计目标
Bun 是从头开始设计的,考虑到了当今的 JavaScript 生态系统。
- 速度。目前 Bun 进程的启动速度比 Node.js 快 4 倍(亲自尝试一下!)
- TypeScript 和 JSX 支持。您可以直接执行
.jsx
、.ts
和.tsx
文件; Bun 的转译器在执行之前将它们转换为普通 JavaScript。 - ESM 和 CommonJS 兼容性。世界正在转向 ES 模块(ESM),但 npm 上的数百万个包仍然需要 CommonJS。 Bun推荐ES模块,但支持CommonJS。
- Web 标准 API。 Bun 实现了标准 Web API,例如
fetch
、WebSocket
和ReadableStream
。 Bun 由 Apple 为 Safari 开发的 JavaScriptCore 引擎提供支持,因此一些 API 如Headers
和URL
直接使用 Safari 的实现。 - Node.js 兼容性。除了支持 Node 风格的模块解析之外,Bun 还旨在与内置 Node.js 全局变量(
process
、Buffer
)和模块(path
)完全兼容、fs
、http
等)这是一项正在进行的工作,尚未完成。请参阅兼容性页面了解当前状态。
Bun 不仅仅是一个运行时。长期目标是成为一个有凝聚力的基础设施工具包,用于使用 JavaScript/TypeScript 构建应用程序,包括包管理器、转译器、捆绑器、脚本运行器、测试运行器等。
- 原文作者:知识铺
- 原文链接:https://index.zshipu.com/geek001/post/20240507/Bun-%E4%B8%80%E4%B8%AA%E4%B8%80%E4%BD%93%E5%8C%96%E7%9A%84-JavaScript-%E5%92%8C-TypeScript-%E5%B7%A5%E5%85%B7%E5%8C%85--%E7%9F%A5%E8%AF%86%E9%93%BA/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。
- 免责声明:本页面内容均来源于站内编辑发布,部分信息来源互联网,并不意味着本站赞同其观点或者证实其内容的真实性,如涉及版权等问题,请立即联系客服进行更改或删除,保证您的合法权益。转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。也可以邮件至 sblig@126.com