<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Bun v1.3 重磅發布:一站式全棧 JS 運行時,前端開發、數據庫、Redis 全內置

      Bun v1.3 重磅發布:一站式全棧 JS 運行時,前端開發、數據庫、Redis 全內置

      image

      Bun v1.3 堪稱迄今為止最大規模的更新 —— 它將 Bun 從 “高性能 JS 運行時” 升級為 “一站式全棧開發解決方案”,不僅原生支持前端開發全流程(熱重載、打包構建),還新增了 MySQL 客戶端、Redis 客戶端等企業級工具,同時大幅提升 Node.js 兼容性。本文將帶你全面拆解 Bun v1.3 的核心特性,以及它如何改變全棧開發流程。

      一、快速上手:多平臺安裝命令

      首先附上各系統的安裝命令,國內開發者可直接復制使用(支持 Windows/macOS/Linux,Docker 也可快速部署):

      # 1. Linux/macOS 通用(curl)
      curl -fsSL https://bun.sh/install | bash
      # 2. Windows(PowerShell)
      powershell -c "irm bun.sh/install.ps1 | iex"
      # 3. npm 全局安裝(適合已裝Node的環境)
      npm install -g bun
      # 4. macOS(Homebrew)
      brew tap oven-sh/bun
      brew install bun
      # 5. Docker(快速測試,無需本地安裝)
      docker pull oven/bun
      docker run --rm --init --ulimit memlock=-1:-1 oven/bun
      

      安裝完成后執行 bun --version,顯示 1.3.x 即代表成功。

      二、核心特性:從前端到后端的全棧支持

      Bun v1.3 的核心升級是 “打通全棧開發鏈路”,以下是最值得關注的功能模塊:

      1.前端開發:原生支持熱重載與生產構建

      Bun 不再需要依賴 Vite、Webpack 等工具 ——v1.3 內置了前端開發服務器,支持 HTML 直接運行、React 熱刷新(Fast Refresh),且性能遠超傳統工具(官方數據顯示,不少團隊已從 Vite 遷移到 Bun)。

      (1)一鍵啟動前端服務

      只需一行命令,Bun 會自動識別所有 HTML 文件并生成路由:

      # 運行當前目錄及子目錄下所有HTML文件
      bun './**/*.html'
      

      執行后輸出如下,直接訪問 http://localhost:3000 即可開發:

      Bun v1.3 ready in 6.62 ms
      → http://localhost:3000/
      Routes:
      └─ / → ./index.html
      └─ /dashboard → ./dashboard.html
      Press h + Enter to show shortcuts
      

      注意:這不是靜態文件服務器 ——Bun 會自動調用原生 JS/CSS 轉譯器和打包器,處理 React、Vue 等框架代碼,無需額外配置。

      (2)熱重載(HMR)與 React Fast Refresh

      Bun 的熱重載基于原生系統 API 實現(macOS 用 kqueue、Linux 用 inotify、Windows 用 ReadDirectoryChangesW),響應速度比 JS 實現快 10 倍以上。框架開發者可通過 import.meta.hot API 自定義熱重載邏輯:

      // React組件中使用熱重載(自動觸發Fast Refresh)
      if (import.meta.hot) {
        import.meta.hot.accept((newModule) => {
          // 自定義更新邏輯
          console.log("組件熱更新完成");
        });
      }
      

      (3)生產環境構建

      開發完成后,用 bun build --production 一鍵打包,自動壓縮代碼、優化資源:

      # 打包index.html及關聯的JS/CSS,輸出到dist目錄
      bun build ./index.html --production --outdir=dist
      

      (4)快速初始化項目

      支持通過模板快速創建項目,包含 React、React+Tailwind、React+shadcn 等常見組合:

      # 交互式選擇模板
      bun init
      # 直接創建React項目
      bun init --react
      # 創建React+Tailwind項目
      bun init --react=tailwind
      # 創建React+shadcn UI項目
      bun init --react=shadcn
      

      企業案例:Midjourney 已采用 Bun 進行前端開發,可見其生產環境穩定性。

      2.全棧開發:前后端同服,簡化 CORS 與路由

      Bun v1.3 解決了全棧開發的核心痛點 —— 前端和后端可運行在同一個服務進程中,無需處理跨域(CORS)問題,且路由系統統一支持前端頁面與后端 API。

      (1)前后端同服示例

      通過 Bun.serve() 同時托管前端 HTML 和后端 API,代碼如下:

      // 導入前端頁面(HTML文件可直接作為模塊導入)
      import homepage from "./index.html";
      import dashboard from "./dashboard.html";
      import { serve, sql } from "bun";
      serve({
        // 開發環境配置:啟用熱重載+瀏覽器日志回傳
        development: {
          hmr: true, // 熱重載
          console: true, // 瀏覽器控制臺日志會同步到終端
        },
        // 統一路由:前端頁面與API共存
        routes: {
          // 前端路由:/ 對應index.html,/dashboard對應dashboard.html
          "/": homepage,
          "/dashboard": dashboard,
          // 后端API:/api/users 支持GET/POST
          "/api/users": {
            GET: async () => {
              // 直接用Bun內置SQL客戶端查詢數據庫(下文詳解)
              const users = await sql`SELECT * FROM users LIMIT 10`;
              return Response.json(users);
            },
            POST: async (req) => {
              const { name, email } = await req.json();
              const [newUser] = await sql`
                INSERT INTO users ${sql({ name, email })}
                RETURNING *; // 插入后返回新用戶數據
              `;
              return Response.json(newUser);
            },
          },
          // 動態路由:/api/users/:id (支持參數提取)
          "/api/users/:id": async (req) => {
            const { id } = req.params; // 自動提取路由參數
            const [user] = await sql`SELECT * FROM users WHERE id = ${id} LIMIT 1`;
            if (!user) return new Response("用戶不存在", { status: 404 });
            return Response.json(user);
          },
          // 健康檢查接口
          "/healthcheck.json": Response.json({ status: "ok" }),
        },
      });
      

      核心優勢:無需配置 Nginx 反向代理,前后端請求走同一端口,徹底消除 CORS 問題。

      (2)編譯為獨立可執行文件

      Bun 可將全棧應用打包成單個可執行文件,方便部署(支持 Windows/macOS/Linux):

      # 編譯全棧應用為獨立 executable(以index.html為入口)
      bun build --compile ./index.html --outfile my-fullstack-app
      

      性能數據:官方測試顯示,編譯后的全棧 React 應用,服務響應速度比 Nginx 快 1.8 倍。

      3.數據庫客戶端:MySQL/Postgres/SQLite 全內置

      Bun v1.3 把 Bun.sql 從 “僅支持 Postgres” 升級為 “統一數據庫 API”,原生支持 MySQL、MariaDB、PostgreSQL 和 SQLite,零依賴且性能遠超第三方庫(如 mysql2、pg)。

      (1)統一連接方式

      無論使用哪種數據庫,連接方式完全一致,只需修改連接 URL:

      import { sql, SQL } from "bun";
      // 1. 連接PostgreSQL
      const postgresDB = new SQL("postgres://user:pass@localhost:5432/mydb");
      // 2. 連接MySQL/MariaDB
      const mysqlDB = new SQL("mysql://user:pass@localhost:3306/mydb");
      // 3. 連接SQLite(本地文件)
      const sqliteDB = new SQL("sqlite://./data.db");
      // 4. 默認連接(讀取環境變量DATABASE_URL)
      const defaultDB = sql; // 自動讀取process.env.DATABASE_URL
      

      (2)SQL 查詢示例

      支持參數化查詢(自動防 SQL 注入),語法簡潔:

      // 1. 基礎查詢(參數用${}傳遞)
      const seniorAge = 65;
      const seniorUsers = await sql`
        SELECT name, age FROM users
        WHERE age >= ${seniorAge}
      `;
      // 2. 插入數據(用sql()簡化對象格式)
      const newUser = { name: "Alice", email: "alice@example.com" };
      await sql`INSERT INTO users ${sql(newUser)}`;
      // 3. PostgreSQL數組操作(新增sql.array helper)
      await sql`
        INSERT INTO users (name, roles)
        VALUES (${"Bob"}, ${sql.array(["admin", "user"], "TEXT")}) // 指定數組類型為TEXT
      `;
      // 4. 多語句查詢(適合數據庫遷移)
      await sql`
        CREATE TABLE users (id SERIAL PRIMARY KEY, name TEXT);
        CREATE INDEX idx_users_name ON users(name);
        INSERT INTO users (name) VALUES ('Admin');
      `.simple(); // 啟用簡單查詢協議,支持多語句
      

      (3)PostgreSQL 增強特性

      針對 PostgreSQL 做了深度優化,支持 Unix 域套接字、動態列操作、數組類型等:

      // 1. 通過Unix域套接字連接(比TCP快30%)
      const unixDB = new SQL({
        path: "/tmp/.s.PGSQL.5432", // 套接字路徑
        user: "postgres",
        database: "mydb",
      });
      // 2. 動態更新指定列(只更新name和email字段)
      const updates = { name: "Alice Smith", email: "alice@smith.com", age: 30 };
      await sql`
        UPDATE users SET ${sql(updates, "name", "email")} // 僅更新前兩個字段
        WHERE id = ${123}
      `;
      // 3. 數組類型查詢(正確保留null值)
      const result = await sql`SELECT ARRAY[0, 1, NULL]::integer[]`;
      console.log(result[0].array); // [0, 1, null](v1.2及之前版本會丟失null)
      

      4.內置 Redis 客戶端:性能碾壓 ioredis

      Bun v1.3 新增原生 Redis 客戶端,支持 Redis 和 Valkey(Redis 的 BSD 協議分支),性能測試顯示:單實例 Bun.redis.get 吞吐量達 250 萬次 / 秒,是 ioredis 的 7.9 倍,且內存占用僅為 ioredis 的 1/8。

      (1)基礎使用

      默認連接 localhost:6379 或讀取環境變量 REDIS_URL,API 簡潔直觀:

      import { redis, RedisClient } from "bun";
      // 1. 基礎操作(set/get)
      await redis.set("username", "alice");
      const username = await redis.get("username");
      console.log(username); // "alice"
      // 2. 查看過期時間(ttl)
      console.log(await redis.ttl("username")); // -1(無過期時間)
      // 3. 自定義客戶端(指定連接地址)
      const myRedis = new RedisClient("redis://:password@localhost:6379/0");
      await myRedis.hset("user:123", "name", "Bob", "age", "30"); // Hash操作
      const user = await myRedis.hgetall("user:123");
      console.log(user); // { name: "Bob", age: "30" }
      

      (2)Pub/Sub 消息訂閱

      原生支持 Redis 發布訂閱,自動處理連接重連:

      import { RedisClient } from "bun";
      // 訂閱者(需單獨創建客戶端,Redis訂閱者不能發布消息)
      const subscriber = new RedisClient("redis://localhost:6379");
      // 發布者(復制訂閱者連接)
      const publisher = await subscriber.duplicate();
      // 訂閱"notifications"頻道
      await subscriber.subscribe("notifications", (message, channel) => {
        console.log(`收到消息:${message}(頻道:${channel})`);
      });
      // 發布消息
      await publisher.publish("notifications", "Bun Redis客戶端測試");
      

      (3)后續規劃

      官方表示將在后續版本中支持 Redis 集群、流(Streams)和 Lua 腳本。

      1. 其他核心升級

      (1)WebSocket 優化

      • 自動消息壓縮:支持 permessage-deflate 擴展,JSON 類消息體積可減少 60%-80%;
      • 子協議協商:符合 RFC 6455 標準,可指定客戶端支持的子協議;
      • 自定義頭信息:允許覆蓋 Host、Sec-WebSocket-Key 等特殊頭,適配代理場景。

      示例代碼:

      // 帶壓縮和自定義頭的WebSocket客戶端
      const ws = new WebSocket("wss://example.com", {
        headers: { "User-Agent": "Bun-Client/1.3" },
        perMessageDeflate: true, // 啟用壓縮
      });
      ws.onopen = () => {
        console.log("WebSocket連接成功,擴展:", ws.extensions); // "permessage-deflate"
      };
      

      (2)包管理增強

      Bun 的包管理器在 v1.3 中新增依賴目錄(catalog)隔離安裝安全掃描等功能,尤其適合單體倉庫(monorepo):

      • catalog 統一版本:在根目錄 package.json 定義依賴版本,所有子包復用,避免版本沖突;
      • 隔離安裝:默認啟用,子包只能訪問自己聲明的依賴,解決 “隱式依賴” 問題;
      • 安全掃描 API:支持集成第三方安全工具(如 Socket),安裝前檢測漏洞;
      • 交互式更新:bun update --interactive 可選擇要更新的依賴,避免批量更新導致的兼容問題。

      示例:catalog 配置(根目錄 package.json)

      {
        "name": "monorepo",
        "workspaces": ["packages/*"],
        "catalog": { // 統一依賴版本
          "react": "^18.3.1",
          "typescript": "^5.5.0"
        }
      }
      

      子包引用 catalog 版本:

      {
        "name": "@myapp/ui",
        "dependencies": {
          "react": "catalog:" // 自動使用根目錄catalog中的react版本
        }
      }
      

      (3)測試與調試

      • VS Code 測試集成:安裝 Bun 插件后,測試用例可在 “測試資源管理器” 中可視化運行;
      • 并發測試:用 test.concurrent 實現 IO 密集型測試并行執行,速度提升 5-10 倍;
      • 類型測試:新增 expectTypeOf 斷言,可在單元測試中驗證 TypeScript 類型;
      • 異步棧追蹤:修復 JSCore 引擎的異步錯誤棧丟失問題,便于定位異步代碼 bug。

      三、Node.js 兼容性:支持更多核心模塊

      Bun v1.3 新增對 node:vm、node:test、worker_threads 等模塊的支持,目前可運行的 Node.js 測試用例比 v1.2 多 800 個,兼容性大幅提升:

      • node:test 支持:可直接運行 Node.js 風格的測試用例;
      • node:vm 增強:支持 ECMAScript 模塊編譯、字節碼緩存;
      • worker_threads 優化:支持 environmentData 實現線程間數據共享。

      四、安全增強:加密存儲與 CSRF 防護

      • Bun.secrets API:使用系統原生密鑰庫存儲敏感信息(macOS 用 Keychain、Linux 用 libsecret、Windows 用 Credential Manager),比環境變量更安全;
      • CSRF 防護:內置 Bun.CSRF 生成 / 驗證令牌,防止跨站請求偽造;
      • 加密性能提升:DiffieHellman 快 400 倍、Cipheriv 快 400 倍、scrypt 快 6 倍。

      五、總結:Bun v1.3 適合哪些場景?

      1. 全棧開發團隊:前后端同服簡化架構,減少跨域與部署復雜度;
      2. 高性能需求場景:Redis、數據庫操作性能遠超傳統方案,適合高并發服務;
      3. 前端工程化:替代 Vite/Webpack,熱重載更快、構建配置更簡單;
      4. 企業級應用:安全特性(加密存儲、CSRF 防護)與兼容性(Node.js 模塊支持)滿足生產環境需求。

      如果你還在使用 “Node.js+Vite + 第三方數據庫庫” 的組合,不妨試試 Bun v1.3—— 它用一套工具鏈解決全棧開發的所有問題,大幅降低技術棧復雜度。

      最后附上官方文檔地址:Bun 官方文檔,更多細節可參考官方指南。

      技術標簽:#Bun #JavaScript #全棧開發 #Node.js #前端工程化 #數據庫 #Redis

      posted @ 2025-10-24 09:40  葡萄城技術團隊  閱讀(554)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 中文字幕va一区二区三区| 国产精品视频免费一区二区| 国产成人高清亚洲综合| 蜜芽久久人人超碰爱香蕉| av区无码字幕中文色| 亚洲一区二区三区色视频| 中文字幕日韩精品国产| 国产精品久久福利新婚之夜| 亚洲天天堂天堂激情性色| 久久久久亚洲av成人网址| 又大又紧又粉嫩18p少妇| 男受被做哭激烈娇喘gv视频| 国产自拍一区二区三区在线| 四虎国产精品永久在线| 亚洲岛国成人免费av| 在线免费播放av观看| 日韩在线视频观看免费网站| 一区二区丝袜美腿视频| 被灌满精子的波多野结衣 | 国产91色在线精品三级| 亚洲精品国产一二三区| 国产中文字幕精品免费| 欧美视频二区欧美影视| 国产香蕉九九久久精品免费| 国产亚洲精品第一综合| 无翼乌口工全彩无遮挡h全彩 | 亚洲精品天堂一区二区| 一二三四中文字幕日韩乱码| 精品国产免费人成在线观看 | 国产欧美亚洲精品a第一页| 镇平县| 性欧美vr高清极品| 精品国产AV无码一区二区三区| 亚洲欧美中文日韩v在线97| 国内偷自第一区二区三区| 特黄少妇60分钟在线观看播放| 线观看的国产成人av天堂| 综合偷自拍亚洲乱中文字幕| 99在线精品国自产拍中文字幕| 老熟女多次高潮露脸视频| 免费人成再在线观看视频|