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.js

const server = Bun.serve({
  port: 3000,
  fetch(req) {
    return new Response("Bun!");
  },
});

console.log(`服务器启动在了 http://localhost:${server.port}`);

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数字文旅重塑旅游发展新格局:以数字化转型为突破口,提升旅游服务的智能化水平,为游客带来全新的旅游体验

随着信息技术的迅猛发展&#xff0c;数字化已成为推动各行各业创新发展的重要力量。在旅游业领域&#xff0c;数字文旅的兴起正以其强大的驱动力&#xff0c;重塑旅游发展的新格局。数字文旅以数字化转型为突破口&#xff0c;通过提升旅游服务的智能化水平&#xff0c;为游客带…

C#基础|OOP、类与对象的认识

哈喽&#xff0c;你好&#xff0c;我是雷工&#xff01; 所有的面向对象的编程语言&#xff0c;都是把我们要处理的“数据”和“行为”封装到类中。 以下为OOP的学习笔记。 01 什么是面向对象编程&#xff08;OOP&#xff09;&#xff1f; 设计类&#xff1a;就是根据需求设计…

论文精读InstructPix2Pix: Learning to Follow Image Editing Instructions

InstructPix2Pix: Learning to Follow Image Editing Instructions 我们提出了一种根据人类指令编辑图像的方法:给定输入图像和告诉模型该做什么的书面指令&#xff0c;我们的模型遵循这些指令来编辑图像。 为了获得这个问题的训练数据&#xff0c;我们结合了两个大型预训练模…

输入输出重定向,追加重定向(Linux)

文章目录 一、输出重定向二、追加重定向三.输入重定向总结 一、输出重定向 我们在使用echo内容时&#xff0c;会把内容显示在显示器上。 echo自动换行。 我们如果输入 echo “hello linux” >file.txt 我们运行一下就会发现系统中多了一个file.txt的文件&#xff0c;如果这…

C语言 基本数据类型及大小

一、基本数据类型 1.整型int 整型的关键字是int&#xff0c;定义一个整型变量时&#xff0c;只需要用int来修饰即可。也分为短整型和长整型。 2.浮点型 浮点型又分单精度浮点型float和双精度浮点型double。 3.字符型char 前面的整型和浮点型都是用于存放数字。字符型&…

代理IP纯净度,对用户居然这么重要!

在网络应用和数据采集等领域&#xff0c;代理IP被广泛使用&#xff0c;而代理IP的纯净度则直接影响其性能和可用性。代理IP的纯净度主要涉及到代理IP在网络传输过程中的稳定性、匿名性和安全性。今天就带大家一起了解代理IP纯净度对用户的重要性。 第一&#xff0c;保护用户的隐…

什么是物理机什么是虚拟机 2024年6款适用于Windows的虚拟机软件推荐 crossover Parallels Desktop Mac运行exe

虚拟化是创建虚拟版本的过程&#xff0c;例如桌面、服务器或网络。它在物理上并不存在&#xff0c;但似乎确实存在。这种环境的虚拟版本可用于多种用途&#xff0c;包括测试和开发、灾难恢复和工作负载整合。虚拟化软件&#xff0c;也称为虚拟机 (VM) 软件&#xff0c;是一种允…

机器学习理论基础—贝叶斯分类器

机器学习理论基础—贝叶斯分类器 贝叶斯决策论 概述&#xff1a;贝叶斯决策论是概率框架下实施决策的基本方法&#xff0c;对分类任务来说&#xff0c;在所有相关概率都已知的理想情形下&#xff0c;贝叶斯决策论考虑如何基于这些概率和误判损失来选择最优的类别标记。 定义 …

HarmonyOS开发案例:【 自定义弹窗】

介绍 基于ArkTS的声明式开发范式实现了三种不同的弹窗&#xff0c;第一种直接使用公共组件&#xff0c;后两种使用CustomDialogController实现自定义弹窗&#xff0c;效果如图所示&#xff1a; 相关概念 [AlertDialog]&#xff1a;警告弹窗&#xff0c;可设置文本内容和响应回…

LangChain入门:24.通过Baby AGI实现自动生成和执行任务

随着 ChatGPT 的崭露头角,我们迎来了一种新型的代理——Autonomous Agents(自治代理或自主代理)。 这些代理的设计初衷就是能够独立地执行任务,并持续地追求长期目标。 在 LangChain 的代理、工具和记忆这些组件的支持下,它们能够在无需外部干预的情况下自主运行,这在真…

Mac下使用homebrew管理多版本mysql同时启动

Mac下使用homebrew管理多版本mysql同时启动 思路 给每个版本分配不同的数据目录和配置文件即可 本文尝试了使用 brew 安装管理多个MySQL版本&#xff0c;同时运行、直接切换 安装 如果已有数据文件请自行备份以及使用 安装 mysql 5.7 brew install mysql5.7在 /opt/home…

银狐样本分析

银狐病毒 概述 msi在安装过程中执行恶意脚本&#xff0c;在C盘释放载荷ee.exe&#xff0c;ee.exe解密执行shellcode&#xff0c;shellcode通过多种手段执行反调试操作&#xff0c;添加Windows Defender的排除路径&#xff0c;解密字符串获取url后建立连接下载文件并解密&…

从递归角度串联二叉树-图论-动态规划

一、深度理解二叉树的前中后序遍历 二叉树遍历框架如下&#xff1a; void traverse(TreeNode* root) {if (root nullptr) {return;}// 前序位置traverse(root->left);// 中序位置traverse(root->right);// 后序位置 }先不管所谓前中后序&#xff0c;单看 traverse 函数…

Linux系统安全与应用【二】

目录 1.开关机安全控制 1.2 实例&#xff1a;GRUB 菜单设置密码 2.终端登录安全控制 2.1 限制root只在安全终端登录 ​3.弱口令检测 3.1 Joth the Ripper,JR​编辑 4.网络端口扫描 4.1 nmap命令 1.开关机安全控制 1.1 GRUB限制 限制更改GRUB引导参数 通常情况下在系统…

【源码】WBF多语言交易所/申购+自发币平台币+币币+杠杆+合约/附带安装教程/带VUE工程源码

【源码介绍】 WBF多语言交易所/申购自发币平台币币币杠杆合约/附带安装教程/带VUE工程源码 【源码说明】 带VUE工程源码最新申购&#xff0c;自发币平台币&#xff0c;币币&#xff0c;法币&#xff0c;杠杆&#xff0c;合约多语言交易所&#xff0c;附带pc和手机VUE&#x…

本地认证的密码去哪了?怎么保证安全的?

1. windows登录的明文密码&#xff0c;存储过程是怎么样的&#xff1f;密文存在哪个文件下?该文件是否可以打开&#xff0c;并且查看到密文&#xff1f; 系统将输入的明文密码通过hash算法转为哈希值&#xff0c;且输入的值会在内存中立即删除无法查看。 然后将密文存放在C:…

基础SQL DQL语句

基础查询 select * from 表名; 查询所有字段 create table emp(id int comment 编号,workno varchar(10) comment 工号,name varchar(10) comment 姓名,gender char(1) comment 性别,age tinyint unsigned comment 年龄,idcard char(18) comment 身份证号,worka…

贪吃蛇大作战【纯c语言】

如果有看到不懂的地方或者对c语言某些知识忘了的话&#xff0c;可以找我之前的文章哦&#xff01;&#xff01;&#xff01; 个人主页&#xff1a;小八哥向前冲~-CSDN博客 所属专栏&#xff1a;c语言_小八哥向前冲~的博客-CSDN博客 贪吃蛇游戏演示&#xff1a; 贪吃蛇游戏动画演…

ArcGIS Pro 和 Python — 分析全球主要城市中心的土地覆盖变化

第一步——设置工作环境 1–0. 地理数据库 在下载任何数据之前,我将创建几个地理数据库,在其中保存和存储所有数据以及我将创建的后续图层。将为我要分析的五个城市中的每一个创建一个地理数据库,并将其命名为: “Phoenix.gdb” “Singapore.gdb” “Berlin.gdb” “B…

抖音小店无货源怎么做?新手五步运营法,简单又实用!

大家好&#xff0c;我是电商糖果 很多朋友开抖店之前&#xff0c;对电商没有一点基础。 这个时候就会出现一种非常尴尬的情况&#xff0c;就是店铺开好之后&#xff0c;不知道怎么运营。 糖果做电商有7年时间了&#xff0c;做抖音小店也有四年多了。 现在也开了多家小店&am…