使用 Bun 快速搭建一个 http 服务

news2024/11/19 17:49:27

前端运行时 Bun 1.0 正式发布,如今,Bun 已经稳定并且适用于生产环境。Bun 不仅是一个专注性能与开发者体验的全新 JavaScript 运行时,还是一个快速的、全能的工具包,可用于运行、构建、测试和调试 JavaScript 和 TypeScript 代码,无论是单个文件还是完整的全栈应用。

Bun

一、安装 Bun

# npm
npm install -g bun

# brew
brew tap oven-sh/bun
brew install bun

# curl
curl -fsSL https://bun.sh/install | bash

# docker
docker pull oven/bun
docker run --rm --init --ulimit memlock=-1:-1 oven/bun

二、Bun 优势

  • 相比 Node.js ,Bun 可以直接运行 .js、.ts、.cjs、.mjs、.jsx、.tsx 文件。
  • Bun 的速度非常快,启动速度比 Node.js 快 4 倍。当运行 TypeScript 文件时,这种差异会更加明显,因为在Node.js中运行TypeScript文件需要先进行转译才能运行。

三、使用 Bun 构建 http 服务

  1. 初始化项目
mkdir bun

cd bun 

npm init -y 
  1. 安装依赖
bun add figlet

bun add -d @types/figlet bun-types
  1. 配置 tsconfig.json
{
  "compilerOptions": {
    // add Bun type definitions
    "types": ["bun-types"],

    // enable latest features
    "lib": ["esnext"],
    "module": "esnext",
    "target": "esnext",

    // if TS 5.x+
//    "moduleResolution": "bundler",
    "noEmit": true,
    "allowImportingTsExtensions": true,
    "moduleDetection": "force",
    // if TS 4.x or earlier
    "moduleResolution": "nodenext",

    "jsx": "react-jsx", // support JSX
    "allowJs": true, // allow importing `.js` from `.ts`
    "esModuleInterop": true, // allow default imports for CommonJS modules

    // best practices
    "strict": true,
    "forceConsistentCasingInFileNames": true,
    "skipLibCheck": true
  }
}
  1. 创建 index.ts 文件
import { serve, file } from "bun";
import figlet from "figlet";

const server = serve({
  port: 3000,
  fetch: async (request) =>{
    // console.log(request.url)
    let files = file('./package.json')
    let json = await files.text()
    const body = figlet.textSync("Hello , Bun !");
    return new Response(`${body} \n\n ${json}`);
    // console.log(json)
  },
});

console.log(`Listening on http://localhost:${server.port} ...`);
  1. 在 package.json 中添加 start 启动命令,配置热更新,监听文件变化
{
  "scripts": {
    "start": "bun --hot index.ts"
  }
}
  1. bun start 启动服务,效果如下:

Bun Server


欢迎访问:天问博客

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

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

相关文章

6-4 删除链表中的元素 分数 10

struct ListNode* removeElements(struct ListNode* head, int val) {struct ListNode* prv NULL;struct ListNode* cur head;// 处理头节点等于val的情况while (cur ! NULL && cur->val val) {head cur->next;free(cur);cur head;}// 处理中间节点和尾节点…

linux本机进程间通信之UDS

本机进程间通信有很多方式,百度有太多的文章来介绍相关,大致有消息队列、共享内存、socket等、这里重点介绍下socket(套接字)的一种用法,一般情况下在socket是用于不同主机间的通信,但是当通信双方在同一台…

大模型遇上数智化,腾讯云与行业专家共探行业AI发展之路

引言 自去年底 OpenAI 推出 ChatGPT 起,大模型作为新的生产工具登上了新一轮生产力革命的舞台。事实上,数十年来历经了多次起落的 AI 技术,尽管一直被赋予着极高的期待,但在落地产业端时,却总显得差强人意。大模型的爆…

试题:动态规划

爱吃鬼 小艺酱每天都在吃和睡中浑浑噩噩的度过。 可是小肚子是有空间上限v的。 小艺酱有n包零食,每包零食占据小肚子空间a_i并会给小艺酱一个甜蜜值b_i。 小艺酱想知道自己在小肚子空间上限允许范围内最大能获得的甜蜜值是多少? 使用c和动态规划解题&#xff1a…

伦敦银最新价格能进吗?

不少新手的伦敦银投资者由于看不懂行情走势,在行情机会来临时总感觉患得患失,但由于又十分渴望在这个市场上实现收益,所以经常通过各种各样的方式方法和手段,希望行情走势什么时候会出现进场的机会。 可以肯定的是,伦敦…

大语言模型黑盒被打破;Meta 元宇宙硬件亏损可能高于市场共识丨 RTE 开发者日报 Vol.60

开发者朋友们大家好: 这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE (Real Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有…

2023年中国干毛茶行业总产值、总产量及未来发展趋势分析:茶叶总产量与总产值均实现稳定增长[图]

中国各地持续发力做好“茶文章”,让茶产业成为重要的民生产业。我国是全球最大的茶叶生产国和消费国,2022年全国茶园面积达4995.40万亩,干毛茶总产值再创历史新高,达到3180.68亿元,较上年增加252.6亿元,同比…

Unity之Hololens如何使用ARAnchorManager 锚点系统实现世界锁

一.前言 什么是Hololens? Hololens是由微软开发的一款混合现实头戴式设备,它将虚拟内容与现实世界相结合,为用户提供了沉浸式的AR体验。Hololens通过内置的传感器和摄像头,能够感知用户的环境,并在用户的视野中显示虚拟对象。这使得用户可以与虚拟内容进行互动,将数字信…

【python爬虫】闲鱼爬虫,可以爬取商品

目录 前言 一、介绍 二、爬虫流程 1. 确定关键词并构造URL 2. 发送网络请求 3. 解析HTML并提取数据 4. 保存数据 三、使用代理IP 四、完整代码 五、总结 前言 闲鱼是一个很受欢迎的二手交易平台,但是由于没有开放API,我们需要使用爬虫来获取数…

Ubuntu系统 OCR文字识别与 Latex公式识别

一、OCR文字识别 Step1:安装tesseract tesseract 是一个开源的OCR引擎,最初是由惠普公司开发用来作为其平板扫描仪的OCR引擎,2005年惠普将其开源出来,之后google接手负责维护。目前稳定的版本是3.0。4.0版本加入了基于LSTM的神经…

LED显示屏单元板质量好坏如何分辨?

要分辨LED显示屏单元板的质量好坏,可以考虑以下几个关键因素: 分辨率和图像质量 查看显示屏的分辨率和图像质量。高分辨率和清晰的图像通常是质量较高的显示屏的标志。 注意观察图像是否有像素化、色彩失真或亮度不均匀的问题。这里关于LED显示屏的尺寸…

React xlsx(工具库) 处理表头合并

前端导出excel表格 引入xlsx插件,不然应该是运行不起来的 npm i xlsx xlsx中文文档 插件2 exceljs npm i exceljs exceljs中文文档 导出 例子 import { ExportExcel } from ./exportExcel/index;const columns[{title: id,dataIndex: item1,},{title: 序号,dataInd…

一座“城池”:泡泡玛特主题乐园背后,IP梦想照亮现实

“更适合中国宝宝体质”的主题乐园,被泡泡玛特造出来了。 9月26日,位于北京朝阳公园内的国内首个潮玩行业沉浸式 IP 主题乐园,也是泡泡玛特首个线下乐园——泡泡玛特城市乐园 POP LAND正式开园。 约4万平方米的空间中,泡泡玛特使…

java vue框架搭建

最近在使用spring boot 和vue .js搭建框架 首先用idea 创建demo 项目 使用mybatis 持久层框架,数据库mysql ,maven构建项目 vue 使用命令nmp run build 构建后目录如下 把此项目dist下的static的文件夹拷贝到idea项目下的static,index.html…

开发工具:推荐几款非常漂亮的VScode主题

目录 Atom One Dark Theme Github Theme Night Owl Theme Night Owl JellyFish Theme Sublime Material Theme 深色 浅色 今天给大家推荐几款非常漂亮的VScode主题,值得收藏! Atom One Dark Theme 它是市场上最好的深色主题之一。Atom 标志性的…

2023年中国旋挖钻机市场销量、竞争格局及行业发展趋势分析[图]

旋挖钻机是一种用于桩工基建项目中成孔作业等基础建设的工程机械。相比于其他桩工机械,旋挖钻机施工效率高,控制精度高,污染和噪音较小并且整机灵活度高,可以适应我国大部分土壤地质条件,如中东部地区砂土,…

卡尔曼滤波器设计及实例

1 卡尔曼滤波器基本原理 卡尔曼滤波常用于动态多变化系统中的状态估计,是一种通用性强的自回归滤波器。它的由来和NASA登月有关。其发明者鲁道夫.E.卡尔曼在一次访问NASA的时候,发现阿波罗计划中一个难点是轨道预测问题,因而提出了一种滤波器…

揭开黑客的神秘面纱:黑客文化、技术手段与防御策略

目录 1. 引言1.1 黑客的定义与起源1.2 黑客文化的形成与传承 2. 黑客的分类与目标2.1 道德黑客与恶意黑客2.2 黑客攻击的目标与动机解析 3. 黑客的技术手段3.1 网络入侵与渗透测试3.2 社会工程学与钓鱼攻击3.3 恶意软件与病毒传播3.4 数据泄露与身份盗窃 4. 防御黑客攻击的策略…

微信公众号怎么变更认证主体?

公众号迁移有什么作用?只能变更主体吗?公众号迁移是将原公众号的粉丝、违规记录、文章和素材库(可选)迁移至一个新的公众号。整体流程较为复杂,需花费7-10天。通过公众号迁移功能可以将A账号的粉丝、文章素材&#xff…