Bun 入门到精通(一)

Bun 是什么?

Bun 是用于 JavaScript 和 TypeScript 应用程序的多合一工具包。它作为一个名为 bun 的可执行文件提供。

其核心是 Bun 运行时,这是一个快速的 JavaScript 运行时,旨在替代 Node.js。它是用 Zig 编写的,并由 JavaScriptCore 提供支持,大大减少了启动时间和内存使用量。

Bun 的优点

速度

目前,Bun 流程的启动速度比 Node.js 快 4.5 倍;比 Deno 快 2 倍。

在这里插入图片描述

TypeScript 和 JSX support 支持

可以直接执行 .jsx.ts、和 .tsx 文件。

Bun 的转译器在执行之前将这些转换为普通的 JavaScript。

兼容 ESM 和 CommonJS

世界正在向 ES 模块(ESM)迈进,但 npm 上的数百万个包仍然需要 CommonJS。

Bun 推荐 ES 模块,仍然支持 CommonJS。

ESM 的目标是成为浏览器最好的模块化规范。

CMJ 的目标是成为服务器最好的模块化规范。

Web 标准的 API

Bun 实现了标准的 Web API,如:fetchWebSocketReadableStream

Bun 由 JavaScriptCore 引擎提供支持,该引擎由 Apple 为 Safari 开发,因此一些 API,如:HeadersURL 直接使用 Safari 的实现。

兼容 Node.js

除了支持 Node 式模块解析外,Bun 还旨在与内置的 Node.js 全局变量(processBuffer)和模块(pathfshttp,etc.)完全兼容。

当前还未做到完全兼容,详细看官网。

安装 Bun

# 通过 npm 安装
npm i bun -g# 查看版本
bun --version# 升级版本
bun upgrade# 通过 npm 卸载
npm uninstall bun -g

Bun 的命令

bun 命令行工具还实现了测试运行程序、脚本运行程序和 Node.js 兼容的包管理器,所有这些都比现有工具快得多,并且可以在现有的 Node.js 项目中使用,几乎不需要更改。

bun 的命令几乎和 npm 无异,极大程度的减少了学习成本。

命令说明
bun init初始化
bun <file>运行文件
bun run <script>运行脚本
bun build <file>打包文件
bun test <file>测试文件
bun link将当前包注册为一个“可链接”包
bun install安装所有包
bun add <pkg>安装包
bun remove <pkg>卸载包
bun update <pkg>更新包

Bun 还提供了 bunx,功能类似 npx

TypeScript 支持

# 安装 @types/bun 包
bun add -d @types/bun

配置 tsconfig.json 文件

{"compilerOptions": {// Enable latest features"lib": ["ESNext"],"target": "ESNext","module": "ESNext","moduleDetection": "force","jsx": "react-jsx","allowJs": true,// Bundler mode"moduleResolution": "bundler","allowImportingTsExtensions": true,"verbatimModuleSyntax": true,"noEmit": true,// Best practices"strict": true,"skipLibCheck": true,"noFallthroughCasesInSwitch": true,// Some stricter flags"noUnusedLocals": true,"noUnusedParameters": true,"noPropertyAccessFromIndexSignature": true}
}

用 Bun 写一个服务器脚本

// server.jsconst server = Bun.serve({port: 3000,fetch(req) {return new Response("Bun!");},
});console.log(`服务器启动在了 http://localhost:${server.port}`);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/3774.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Matlab|交直流系统潮流计算(含5种控制模式)

目录 1 主要内容 程序参考流程图 2 部分代码 3 程序结果 4 下载链接 1 主要内容 该程序参考文献《交直流系统潮流计算及相互关联特性分析》&#xff0c;采用5种交直流潮流控制方式&#xff1a;1.定电流定电压 2.定电流定熄弧角 3.定功率定电压 4.定功率定熄弧角 5.定触发角…

Kafka 生产者应用解析

目录 1、生产者消息发送流程 1.1、发送原理 2、异步发送 API 2.1、普通异步发送 2.2、带回调函数的异步发送 3、同步发送 API 4、生产者分区 4.1、分区的优势 4.2、生产者发送消息的分区策略 示例1&#xff1a;将数据发往指定 partition 示例2&#xff1a;有 key 的…

ollama集成open-webui本地部署大模型应用

文章目录 概述安装ollama运行指定模型命令帮助docker 安装 webuiWebUI与ollama在同一台机器WebUI与ollama不在同一台机器(推荐)更新open-webui离线安装open-webui使用验证访问导入模型文件参考资料概述 ollama是一款在本地启动并运行大型语言模型的工具,主要功能是在 Docke…

原型模式(上机考试抽题)

定义 原型模式主要解决的问题就是创建复对象&#xff0c;⽽这部分 对象 内容本身⽐较复杂&#xff0c;⽣成过程可能从库或者RPC接⼝中获取数据的耗时较⻓&#xff0c;因此采⽤克隆的⽅式节省时间。 上机考试抽题 从⼀部分可以上机考试的内容开始&#xff0c;在保证⼤家的公平…

经典的免费wordpress模板

这款经典的免费WordPress模板以鲜艳的红色为主调&#xff0c;充满了活力与热情。设计简洁而现代&#xff0c;适合各种类型的项目网站。模板采用响应式设计&#xff0c;确保在不同设备和屏幕尺寸上都能呈现出完美的视觉效果。 红色象征着激情、活力和自信&#xff0c;这款模板…

面试题:判断一个完全平方数

面试题&#xff1a;判断一个完全平方数 方法一&#xff1a;平方根法 bool isPerfectSquare(int n) {int sqrt_n int(sqrt(1.0 * n));return sqrt_n * sqrt_n n; }方法二&#xff1a;连续奇数和法 // 一个完全平方数可以表示为前n个连续奇数的和&#xff0c;如1 3 5 // 不…

对策略模式的理解

目录 一、场景1、题目描述 【[来源](https://kamacoder.com/problempage.php?pid1082)】2、输入描述3、输出描述4、输入示例5、输出示例 二、不使用策略模式三、使用策略模式1、不优雅的实现2、策略模式 简单工厂模式2.1 代码2.2 优点2.3 另一种实现方式 四、个人思考 一、场…

2024年Q1企业邮箱安全性研究报告:钓鱼邮件同比增长59.9%

4月23日&#xff0c;Coremail邮件安全联合北京中睿天下信息技术有限公司发布《2024年第一季度企业邮箱安全性研究报告》。对当前企业邮箱的应用状况和安全风险进行了分析。 1、垃圾邮件持续增长 根据Coremail邮件安全人工智能实验室最新数据显示&#xff0c;2024年第一季度&am…

4 -26

4-26 1 英语单词100个一篇六级翻译 2 div 4 补题目 3 概率论期中卷子一张&#xff0c;复习复习。 4 备课ing 晚上出去炫饭&#xff0c;串串香&#xff0c;无敌了。 中间一些模拟题是真的恶心&#xff0c;思维题是真的想不到&#xff0c;感觉自己就是一个废物呢。 1.是将一个数…

[C++]STL---unordered_set与unordered_map的模拟实现

目录 前言 哈希桶的改造 哈希桶的初步改造 迭代器的模拟实现 operator() 类互相typedef时的前置声明 友元声明 迭代器的出口 插入Insert() 查找Find(&#xff09; 哈希表的最终改造 unordered_set的模拟实现 unordered_map的模拟实现 前言 unordered_set与set的区…

mysql索引里得基数是啥

最近遇到又问mysql索引中得基数是啥&#xff0c;有什么影响吗&#xff0c;下面罗列以下&#xff1a; 索引里得基数是指索引中存放得不同值的数量。对于像某个字段&#xff0c;如果存有多个不同的值&#xff0c;那么基数就会大&#xff0c;反之&#xff0c;如果有很多重复的值&a…

运行游戏提示dll文件丢失,分享多种有效的解决方法

在我们日常频繁地利用电脑进行娱乐活动&#xff0c;特别是畅玩各类精彩纷呈的电子游戏时&#xff0c;常常会遭遇一个令人困扰的问题。当我们满怀期待地双击图标启动心仪的游戏程序&#xff0c;准备全身心投入虚拟世界时&#xff0c;屏幕上却赫然弹出一条醒目的错误提示信息&…

最受站长欢迎的wordpress模板

蓝色与黄色&#xff0c;作为经典的互补色&#xff0c;它们在企业网站设计中总能碰撞出令人印象深刻的火花。当这两种鲜艳的色彩巧妙结合时&#xff0c;不仅能够吸引访客的注意力&#xff0c;还能传达出一种活力四射、积极向上的企业形象。 今天&#xff0c;我们为您推荐的这款…

LAPGAN浅析

LAPGAN 引言 在原始 GAN和CGAN中&#xff0c;还只能生成 16*16, 28*28, 32*32 这种低像素小尺寸的图片。而LAPGAN首次实现 64*64 的图像生成。与其一下子生成这么大的图像 &#xff08;包含信息量这么多&#xff09;&#xff0c;不如一步步由小到大&#xff0c;这样每一步生成…

书籍推推荐之二--《生命的色彩》

史钧《生命的色彩》 在生活中&#xff0c;我们会注意到一个有趣的现象&#xff1a;每个人的头发颜色各不相同&#xff0c;有黑色、灰色、黄色、棕红色、银白色等&#xff0c;但就是没有绿色。对于生活在丛林中的早期人类来说&#xff0c;绿色的头发简直就是天然的迷彩服&#x…

RabbitMq总结

1.架构 rabbitmq由消费者&#xff0c;生产者&#xff0c;交换机&#xff0c;队列&#xff0c;bindingkey组成&#xff0c;交换机存在四种&#xff0c;主流使用三种 2.事务消息机制 将消息发送到一个单独的事务队列&#xff0c;再从事务队列发送到消费者可消费的队列&#xf…

区块链在物流中的应用

区块链如何在物流行业中应用&#xff1f; - 知乎 (zhihu.com) 区块链物流:打造智能物流可信生态网络 - 知乎 (zhihu.com) 菜鸟供应链发布一款基于大模型的数字化供应链产品“天机π”&#xff0c;通过菜鸟算法基于大模型的生成式AI辅助决策&#xff0c;在销量预测、补货计划和…

随手记:树结构翻页和定位指定数据逻辑

业务背景&#xff1a; 树形组件展示数据&#xff0c;数据包含过去数据&#xff0c;现在数据&#xff0c;未来数据&#xff0c;用户在首次进入页面时&#xff0c;展示的是当天的数据&#xff0c;如果当天没有数据&#xff0c;则显示最近一条的过去数据。数据按照时间越长数据会…

《托斯卡纳艳阳》

有爱情不断流淌的地方&#xff0c;当然充满了诱惑。这里最迷人而优雅的桥段&#xff0c;是非常绅士而浪漫内心丰盈又恪守道德的男人马蒂尼&#xff08;好评&#xff09;赶来为女主捉蛇。蛇的设定自然源于亚当夏娃&#xff0c;而蛇的就此消失&#xff0c;当然告诉我们浪漫不代表…

可替代IBM DOORS的现代化需求管理解决方案Jama Connect,支持数据迁移及重构、实时可追溯性、简化合规流程

作为一家快速发展的全球性公司&#xff0c;dSPACE一直致力于寻找保持领先和优化开发流程的方法。为推进其全球现代化计划&#xff0c;dSPACE开始寻找可以取代传统需求管理平台&#xff08;IBM DOORS&#xff09;的需求管理解决方案。 通过本次案例&#xff0c;您将了解dSPACE为…