2026/6/20 11:39:07
网站建设
项目流程
做网站跟网站设计的区别,phpstudy搭建本地网站,做国际网站有什么需要注意的,网站seo设置是什么大家好#xff0c;我是农村程序员#xff0c;独立开发者#xff0c;前端之虎陈随易#xff0c;技术群与交朋友请在个人网站 #x1f447; 联系我 ✌️
个人网站 1️⃣#xff1a;https://chensuiyi.me个人网站 2️⃣#xff1a;https://me.yicode.tech
我的所有文章均…大家好我是农村程序员独立开发者前端之虎陈随易技术群与交朋友请在个人网站 联系我 ✌️个人网站 1️⃣https://chensuiyi.me个人网站 2️⃣https://me.yicode.tech我的所有文章均为古法手写无 AI 添加剂请放心食用如果你觉得本文有用一键三连 (点赞、评论、转发)就是对我最大的支持~距离v1.3.6发布应该不到半个月吧v1.3.7已经发布了Bun的发版节奏真是比火箭还快。发版快就算了更牛的是每次都能带来一些亮眼的功能本文就来简单盘点一下。快快快性能是Bun的主打方向这次也不例外带来了大量的性能提升。Buffer.from快了50%JavaScriptCore升级到最新版async/await快了35%Array.from快了2倍string.padStart和string.padEnd快了90%array.flat快了3倍ARM64上面性能提升fetch 发送 HTTP 请求时保留头部大小写awaitfetch(https://api.example.com/data,{headers:{Authorization:Bearer token123,// 发送 AuthorizationContent-Type:application/json,// 发送 Content-TypeX-Custom-Header:value// 发送 X-Custom-Header}});constheadersnewHeaders();headers.set(Content-Type,text/plain);// 发送 Content-Type这个我挺喜欢的编程就应该要具备确定性虽然http协议不区分头部属性的大小写但你明明传了Authorization服务端接受却变成了authorization还是怪别扭的。新增 Bun.wrapAnsi()Bun已经内置了npm包wrap-ansi的实现这是在终端显示转义字符彩色输出的方法。我之前写过的一篇文章盘点Bun内置了哪些npm包功能现在又能新增一个内置可替换的npm包了。我特别喜欢这种全包干为啥呢因为很多东西本就简单几乎万年不变的内置到运行时里面方便又快捷。同时呢内置实现一般性能更高比如Bun.wrapAnsi就比wrap-ansi快了33倍-88倍也减少了很多找库找包的时间非常Nice。Markdown CPU Profile 输出# 仅生成 Markdown 配置文件bun --cpu-prof-md script.js# 生成 Chrome DevTools JSON 和 Markdown 格式bun --cpu-prof --cpu-prof-md script.js# 生成与 V8 兼容的堆快照在 Chrome 开发者工具中打开bun --heap-prof script.js# 生成 Markdown 堆配置文件用于使用 grep/sed/awk 进行 CLI 分析bun --heap-prof-md script.js# 指定输出位置bun --heap-prof --heap-prof-dir ./profiles --heap-prof-name my-snapshot.heapsnapshot script.js重磅功能老铁们AI友好的性能分析调优直接得到一个性能方面的md文档扔给AI项目性能问题内存泄漏一清二楚估计这个功能其他几个运行时包括其他语言也会很快跟上。原生 JSON5 支持// 解析JSON5字符constconfigBun.JSON5.parse({ // Database configuration host: localhost, port: 5432, ssl: true, });// JSON5字符串化constoutputBun.JSON5.stringify({name:app,version:1});// 直接导入JSON5文件importsettingsfrom./config.json5;JSON5 是 JSON 的超集增加了开发者友好的特性如注释、尾随逗号、未加引号的键、单引号字符串和十六进制数字。它被 Chromium、Next.js、Babel 和 WebStorm 等主要项目使用。JSON5 特别适用于配置文件其中注释和尾随逗号可以提高可读性和可维护性。Bun.JSONL 用于流式解析 JSONLconstresultsBun.JSONL.parse({name:Alice}\n{name:Bob}\n);// [{ name: Alice }, { name: Bob }]// Uint8Array 也能正常工作 (UTF-8 BOM 自动忽略)constbuffernewTextEncoder().encode({a:1}\n{b:2}\n);constrecordsBun.JSONL.parse(buffer);// [{ a: 1 }, { b: 2 }]Bun 现在内置支持解析 JSONL换行符分隔的 JSON。该解析器使用 JavaScriptCore 的优化 JSON 解析器以 C实现为完整输入和流式使用场景提供快速解析。我能想到的一个场景就是json格式的日志分析应该会很方便。constchunk{id:1}\n{id:2}\n{id:3;constresultBun.JSONL.parseChunk(chunk);result.values;// [{ id: 1 }, { id: 2 }]result.read;// 17 — characters consumedresult.done;// false — incomplete value remainsresult.error;// null — no parse error在流式场景中 parseChunk 尽可能解析多个完整值并返回解析的进度——当从网络流逐步接收数据时很有用。S3 presign() 现在支持 contentDisposition 和 type 选项import{S3Client}frombun;consts3newS3Client({region:us-east-1,endpoint:https://s3.us-east-1.amazonaws.com,accessKeyId:process.env.AWS_ACCESS_KEY_ID,secretAccessKey:process.env.AWS_SECRET_ACCESS_KEY,bucket:my-bucket});constfiles3.file(report.pdf);consturlfile.presign({method:GET,expiresIn:900,contentDisposition:attachment; filenamequarterly-report.pdf,type:application/octet-stream});修复了一个问题即在生成预签名 URL 时 S3File.presign() 会忽略 contentDisposition 和 type 选项。这些选项现在被正确地包含为 response-content-disposition 和 response-content-type 查询参数。这在你希望浏览器将文件作为附件下载而不是内联显示时特别有用。bun pm pack 现在会尊重来自生命周期脚本对 package.json 的更改// package.json{name:my-package,version:1.0.0,scripts:{prepack:node prepack.js},description:Original description,devDependencies:{/* ... */}}// prepack.js - 打包之前改变package.jsonconstfsrequire(fs);constpkgJSON.parse(fs.readFileSync(package.json,utf8));deletepkg.devDependencies;pkg.descriptionProduction build;fs.writeFileSync(package.json,JSON.stringify(pkg,null,2));bun pm pack 在运行 prepack 、 prepare 和 prepublishOnly 脚本后重新读取 package.json 确保这些脚本所做的任何修改都包含在 tarball 中。node:inspector 分析器 APIimportinspectorfromnode:inspector/promises;constsessionnewinspector.Session();session.connect();awaitsession.post(Profiler.enable);awaitsession.post(Profiler.start);const{profile}awaitsession.post(Profiler.stop);awaitsession.post(Profiler.disable);Bun 现在通过 Chrome DevTools Protocol 实现了 node:inspector Profiler API用于 CPU 分析。增加最大 HTTP 头数量请求和响应中允许的最大 HTTP 头数量已从 100 增加到 200。这提高了与发送大量头的服务的兼容性例如具有广泛元数据的 API 或附加多个转发头的代理。WebSocket URL 凭证支持// 凭证会自动转发constwsnewWebSocket(ws://username:passwordexample.com/socket);// 用户提供的授权标头具有优先权constws2newWebSocket(ws://user:passexample.com/socket,{headers:{Authorization:Bearer custom-token// 这将替换默认转发的 Authorization}});WebSocket 连接现在正确地将 URL 中嵌入的凭证作为基本授权头转发与 Node.js 行为一致。当连接到一个包含凭证的 WebSocket URL如 ws://user:passhost 时Bun 现在会自动提取凭证并在 WebSocket 升级握手过程中将其作为正确编码的 Authorization: Basic 头部发送。以上就是本次更新内容我是编程记者陈随易给大家分享行业热点代码技术编程资讯等欢迎关注~