Bun 开发实战指南:基于 agentic-awesome-skills 的 bun-development 技能全解析

发布时间:2026/10/21 5:33:36
Bun 开发实战指南:基于 agentic-awesome-skills 的 bun-development 技能全解析 AI 技能AI 插件人工智能【免费下载链接】agentic-awesome-skillsAAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and planning, backed by 2,600 agentic skills. Includes CLI, local MCP, catalog, plugins, and Workbench.项目地址https://gitcode.com/GitHub_Trending/an/agentic-awesome-skills点击查看免费下载本文导读本文基于 agentic-awesome-skills 仓库中bun-development技能文档SKILL.md 及其 详细指南编写完整覆盖 Bun 运行时的安装、项目搭建、包管理、内置 API、测试、打包构建、Node.js 迁移与性能优化全流程。读完本文你将掌握一套可直接落地执行的 Bun 全栈开发方案能够在 Agent 或 CLI 场景下用最快路径完成 JS/TS 项目的创建、运行、测试与发布。1. 技能定位何时启用 bun-developmentbun-development是 agentic-awesome-skills 仓库中面向 Bun 运行时的专项技能定义于 SKILL.md技能元数据中name: bun-development、risk: critical、source: community、date_added: 2026-02-27。同目录下还保留了另一份镜像副本于 plugins/agentic-awesome-skills/skills/bun-development/SKILL.md两者结构一致均可作为技能挂载入口。技能元数据中description将其定位为 Fast, modern JavaScript/TypeScript development with the Bun runtime即使用 Bun 运行时进行快速、现代的 JavaScript/TypeScript 开发。根据 SKILL.md 的 When to Use This Skill 一节该技能适用于以下五类场景启动新的 JS/TS 项目使用bun init/bun create一步完成脚手架搭建从 Node.js 迁移到 Bun利用 Bun 对 Node.js API 的兼容层平滑替换运行时与包管理器优化开发速度利用 Bun 的毫秒级冷启动、原生 TypeScript/JSX 支持和并行安装能力加速迭代使用 Bun 内置工具开箱即用的打包器bundler与测试运行器test runner排查 Bun 特有故障针对 Bun 生态的兼容性、锁文件、跨平台问题提供专项处理路径。同时SKILL.md 明确列出了三条使用边界Limitations仅在任务与上述范围明确匹配时使用该技能不越界套用技能输出不能替代环境相关的验证、测试或专家评审当所需输入、权限、安全边界或成功标准缺失时应停下来向用户请求澄清而非盲目执行。执行前应先加载 references/detailed-guide.md 获取完整流程与参考材料并将其中的安全、前置条件与验证要求视为强制项聚焦性任务可按需加载相关章节端到端任务则应完整通读。2. 安装 Bun五种途径与升级2.1 macOS / Linux 安装最推荐的 macOS / Linux 安装方式是 Homebrewbrew install oven-sh/bun/bun也可以使用官方安装脚本。出于安全考虑文档要求先下载、审阅脚本内容再执行而不是直接管道执行# Alternative: download the official installer, inspect it, then execute it tmpdir$(mktemp -d) trap rm -rf $tmpdir EXIT curl -fsSLo $tmpdir/bun-install.sh https://bun.sh/install cat $tmpdir/bun-install.sh # review the full installer before executing bash $tmpdir/bun-install.sh这一先审阅后执行的模式与仓库中 SECURITY_GUARDRAILS.md、SECURITY.md 等安全治理文档的精神一致——对来自网络的安装脚本保持最小信任原则。2.2 Windows 安装powershell -NoProfile -Command Invoke-WebRequest https://bun.sh/install.ps1 -OutFile $env:TEMP\bun-install.ps1; Get-Content $env:TEMP\bun-install.ps1 -TotalCount 120; powershell -ExecutionPolicy Bypass -File $env:TEMP\bun-install.ps1注意该命令同样先下载脚本、读取前 120 行供审阅再以绕过执行策略的方式运行。2.3 Homebrew Tap、npm 与升级# Homebrew brew tap oven-sh/bun brew install bun # npm (if needed) npm install -g bun # Upgrade bun upgradebun upgrade会将当前安装升级到最新发布版本如果通过 npm 安装则改用npm update -g bun管理版本。2.4 为什么选择 Bun与 Node.js 的关键差异detailed-guide.md 用一张对比表概括了 Bun 相对 Node.js 的核心优势FeatureBunNode.jsStartup time~25ms~100msPackage install10-100x fasterBaselineTypeScriptNativeRequires transpilerJSXNativeRequires transpilerTest runnerBuilt-inExternal (Jest, Vitest)BundlerBuilt-inExternal (Webpack, esbuild)需要说明的是上表数据来自原技能文档属于 Bun 官方宣传口径下的典型基准对比实际数值会随硬件、依赖规模与操作系统变化关键差异点是结构性的——Bun 将转译、打包、测试、安装整合进单一运行时消除了 Node.js 生态中运行时 转译器 打包器 测试框架的多层叠加成本。3. 项目初始化与工程配置3.1 创建新项目# Initialize project bun init # Creates: # ├── package.json # ├── tsconfig.json # ├── index.ts # └── README.md # With specific template bun create template project-name # Examples bun create react my-app # React app bun create next my-app # Next.js app bun create vite my-app # Vite app bun create elysia my-api # Elysia APIbun init是交互式向导生成的index.ts即项目入口与package.json中的module字段对应。bun create则从社区模板仓库拉取脚手架支持 react / next / vite / elysia 等主流模板——elysia是专门针对 Bun 优化的 Web 框架模板。3.2 package.jsonBun 工程的标准骨架{ name: my-bun-project, version: 1.0.0, module: index.ts, type: module, scripts: { dev: bun run --watch index.ts, start: bun run index.ts, test: bun test, build: bun build ./index.ts --outdir ./dist, lint: bunx eslint . }, devDependencies: { types/bun: latest }, peerDependencies: { typescript: ^5.0.0 } }要点说明module: index.ts声明模块入口支持直接指向.ts源文件无需编译产物type: module启用 ESM 语义dev脚本中的--watch实现文件变更自动重启test直接调用内置测试运行器build调用内置打包器types/bun提供Bun全局对象的类型声明typescript作为 peerDependency 提供 TS 编译能力。3.3 tsconfig.jsonBun 优化配置{ compilerOptions: { lib: [ESNext], module: esnext, target: esnext, moduleResolution: bundler, moduleDetection: force, allowImportingTsExtensions: true, noEmit: true, composite: true, strict: true, downlevelIteration: true, skipLibCheck: true, jsx: react-jsx, allowSyntheticDefaultImports: true, forceConsistentCasingInFileNames: true, allowJs: true, types: [bun-types] } }这份配置针对 Bun 的特点做了定制module: esnextmoduleResolution: bundler匹配 Bun 原生的 ESM 与打包器解析语义allowImportingTsExtensions: true允许在import中直接书写.ts扩展名Bun 可直接执行noEmit: trueBun 运行时本身执行 TS 源文件无需 tsc 产出 JSjsx: react-jsx开箱即用地支持 JSX 转换types: [bun-types]注入 Bun 全局类型与types/bun二选一即可新版 Bun 推荐types/bun。4. 包管理安装、更新与锁文件4.1 安装依赖# Install from package.json bun install # or bun i # Add dependencies bun add express # Regular dependency bun add -d typescript # Dev dependency bun add -D types/node # Dev dependency (alias) bun add --optional pkg # Optional dependency # From specific registry bun add lodash --registry https://registry.npmmirror.com # Install specific version bun add react18.2.0 bun add reactlatest bun add reactnext # From git bun add github:user/repo bun add githttps://github.com/user/repo.git关键能力bun install的并行解析与全局缓存使其安装速度显著快于 npm/yarn文档口径为 10-100x实际取决于网络与依赖图复杂度--registry允许临时指定镜像源如 npm 镜像适合国内网络环境版本号支持精确版本、latest、next标签也支持直接以github:user/repo或githttps://...形式从 Git 仓库安装。4.2 移除与更新# Remove package bun remove lodash # Update packages bun update # Update all bun update lodash # Update specific bun update --latest # Update to latest (ignore ranges) # Check outdated bun outdatedbun update --latest会忽略 package.json 中的版本范围约束直接升级到最新版——升级前建议先运行bun outdated查看可升级清单再决定是否全局 --latest。4.3 bunxnpx 的等价物# Execute package binaries bunx prettier --write . bunx tsc --init bunx create-react-app my-app # With specific version bunx -p typescript4.9 tsc --version # Run without installing bunx cowsay Hello from Bun!bunx与npx语义等价临时下载并执行包二进制不污染项目的 dependencies。-p pkgversion可指定要执行的具体版本。4.4 锁文件管理# bun.lockb is a binary lockfile (faster parsing) # To generate text lockfile for debugging: bun install --yarn # Creates yarn.lock # Trust existing lockfile bun install --frozen-lockfile默认的bun.lockb是二进制锁文件解析更快bun install --yarn可同时生成人类可读的yarn.lock便于排查在 CI 环境中应使用bun install --frozen-lockfile严格按锁文件版本安装保证构建可复现。5. 运行代码与开发工作流5.1 基本执行# Run TypeScript directly (no build step!) bun run index.ts # Run JavaScript bun run index.js # Run with arguments bun run server.ts --port 3000 # Run package.json script bun run dev bun run build # Short form (for scripts) bun dev bun buildBun 最核心的体验是直接运行 TS/TSX 源文件而无需先编译——运行时内置转译器transpiler这也是no build step工作流的来源。传给脚本的参数如--port 3000会原样传递给脚本本身而不是被 Bun 解释。5.2 Watch 模式与热重载# Auto-restart on file changes bun --watch run index.ts # With hot reloading bun --hot run server.ts--watch文件变化后自动重启整个进程适合服务端脚本--hot热模块替换式地原地重载保留进程状态如已建立的连接适合快速迭代。5.3 环境变量// .env file is loaded automatically! // Access environment variables const apiKey Bun.env.API_KEY; const port Bun.env.PORT ?? 3000; // Or use process.env (Node.js compatible) const dbUrl process.env.DATABASE_URL;# Run with specific env file bun --env-file.env.production run index.tsBun 会自动加载项目根目录的.env文件无需 dotenv 依赖Bun.env是更快的原生读取方式process.env则保持 Node.js 兼容。--env-file可显式指定其他环境文件如.env.production。6. 内置 API 深度实践Bun 原生内置了一批高频 APIdetailed-guide.md 用五组完整示例进行了演示下面逐一展开。6.1 文件系统Bun.file 与 Bun.write// Read file const file Bun.file(./data.json); const text await file.text(); const json await file.json(); const buffer await file.arrayBuffer(); // File info console.log(file.size); // bytes console.log(file.type); // MIME type // Write file await Bun.write(./output.txt, Hello, Bun!); await Bun.write(./data.json, JSON.stringify({ foo: bar })); // Stream large files const reader file.stream(); for await (const chunk of reader) { console.log(chunk); }Bun.file()返回一个惰性的BunFile对象.size字节数、.typeMIME 类型无需读入内存即可获取.text()/.json()/.arrayBuffer()按需读取.stream()以异步迭代方式流式处理大文件避免整文件载入内存。6.2 HTTP 服务器Bun.serveconst server Bun.serve({ port: 3000, fetch(request) { const url new URL(request.url); if (url.pathname /) { return new Response(Hello World!); } if (url.pathname /api/users) { return Response.json([ { id: 1, name: Alice }, { id: 2, name: Bob }, ]); } return new Response(Not Found, { status: 404 }); }, error(error) { return new Response(Error: ${error.message}, { status: 500 }); }, }); console.log(Server running at http://localhost:${server.port});Bun.serve基于 Web 标准的Request/Response接口内置路由分支逻辑清晰路径匹配、JSON 响应Response.json、404 兜底与统一错误处理error回调。server.port在端口被占用时可能返回实际绑定端口因此用其打印监听地址更可靠。6.3 WebSocket 服务器const server Bun.serve({ port: 3000, fetch(req, server) { // Upgrade to WebSocket if (server.upgrade(req)) { return; // Upgraded } return new Response(Upgrade failed, { status: 500 }); }, websocket: { open(ws) { console.log(Client connected); ws.send(Welcome!); }, message(ws, message) { console.log(Received: ${message}); ws.send(Echo: ${message}); }, close(ws) { console.log(Client disconnected); }, }, });同一个Bun.serve可同时承载 HTTP 与 WebSocket在fetch中调用server.upgrade(req)完成协议升级websocket配置对象则提供open/message/close三个生命周期回调实现连接建立—收发消息—断开的完整双向通信。6.4 SQLitebun:sqliteimport { Database } from bun:sqlite; const db new Database(mydb.sqlite); // Create table db.run( CREATE TABLE IF NOT EXISTS users ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, email TEXT UNIQUE ) ); // Insert const insert db.prepare(INSERT INTO users (name, email) VALUES (?, ?)); insert.run(Alice, aliceexample.com); // Query const query db.prepare(SELECT * FROM users WHERE name ?); const user query.get(Alice); console.log(user); // { id: 1, name: Alice, email: aliceexample.com } // Query all const allUsers db.query(SELECT * FROM users).all();bun:sqlite是 Bun 内置的 SQLite 绑定零外部依赖。使用模式为db.run()执行 DDL/写语句db.prepare().run()执行带参数写操作db.prepare().get()取单行参数为?占位符db.query().all()取全量结果集。语句默认使用预编译 参数绑定天然防注入。6.5 密码哈希Bun.password// Hash password const password crypto.randomUUID(); const hash await Bun.password.hash(password); // Verify password const isValid await Bun.password.verify(password, hash); console.log(isValid); // true // With algorithm options const bcryptHash await Bun.password.hash(password, { algorithm: bcrypt, cost: 12, });Bun.password.hash/Bun.password.verify提供开箱即用的密码哈希与校验默认使用 argon2idBun 的默认算法也可显式指定bcrypt并调节cost计算成本因子文档示例取 12。这一组合让注册时哈希、登录时校验的标准安全流程无需引入第三方加密库。7. 内置测试运行器7.1 基础测试// math.test.ts import { describe, it, expect, beforeAll, afterAll } from bun:test; describe(Math operations, () { it(adds two numbers, () { expect(1 1).toBe(2); }); it(subtracts two numbers, () { expect(5 - 3).toBe(2); }); });测试从bun:test导入describe/it/expect等 API风格与 Jest 高度一致迁移成本极低beforeAll/afterAll等钩子同样可用。7.2 运行测试的命令矩阵# Run all tests bun test # Run specific file bun test math.test.ts # Run matching pattern bun test --grep adds # Watch mode bun test --watch # With coverage bun test --coverage # Timeout bun test --timeout 5000各参数含义--grep按测试名模式过滤--watch文件变更自动重跑--coverage输出覆盖率报告--timeout 5000设置单测超时毫秒。7.3 断言匹配器全览import { expect, test } from bun:test; test(matchers, () { // Equality expect(1).toBe(1); expect({ a: 1 }).toEqual({ a: 1 }); expect([1, 2]).toContain(1); // Comparisons expect(10).toBeGreaterThan(5); expect(5).toBeLessThanOrEqual(5); // Truthiness expect(true).toBeTruthy(); expect(null).toBeNull(); expect(undefined).toBeUndefined(); // Strings expect(hello).toMatch(/ell/); expect(hello).toContain(ell); // Arrays expect([1, 2, 3]).toHaveLength(3); // Exceptions expect(() { throw new Error(fail); }).toThrow(fail); // Async await expect(Promise.resolve(1)).resolves.toBe(1); await expect(Promise.reject(err)).rejects.toBe(err); });匹配器覆盖六大类相等性toBe/toEqual/toContain、数值比较toBeGreaterThan/toBeLessThanOrEqual、真值判断toBeTruthy/toBeNull/toBeUndefined、字符串匹配toMatch正则 /toContain子串、数组长度toHaveLength、异常断言toThrow以及异步场景的resolves/rejects。7.4 Mock 与 Spyimport { mock, spyOn } from bun:test; // Mock function const mockFn mock((x: number) x * 2); mockFn(5); expect(mockFn).toHaveBeenCalled(); expect(mockFn).toHaveBeenCalledWith(5); expect(mockFn.mock.results[0].value).toBe(10); // Spy on method const obj { method: () original, }; const spy spyOn(obj, method).mockReturnValue(mocked); expect(obj.method()).toBe(mocked); expect(spy).toHaveBeenCalled();mock()创建可断言的模拟函数toHaveBeenCalled/toHaveBeenCalledWith结果可经mock.results检查spyOn()拦截对象方法并可用mockReturnValue替换返回值——覆盖了行为验证与依赖替换两类典型测试需求。8. 打包构建与可执行文件8.1 命令行打包# Bundle for production bun build ./src/index.ts --outdir ./dist # With options bun build ./src/index.ts \ --outdir ./dist \ --target browser \ --minify \ --sourcemapbun build是内置打包器底层为 esbuild 同源的 Bun 原生实现。--target可选browser/bun/node三档决定产物面向的运行环境--minify压缩产物--sourcemap生成源码映射便于调试。8.2 编程式构建 APIBun.buildconst result await Bun.build({ entrypoints: [./src/index.ts], outdir: ./dist, target: browser, // or bun, node minify: true, sourcemap: external, splitting: true, format: esm, // External packages (not bundled) external: [react, react-dom], // Define globals define: { process.env.NODE_ENV: JSON.stringify(production), }, // Naming naming: { entry: [name].[hash].js, chunk: chunks/[name].[hash].js, asset: assets/[name].[hash][ext], }, }); if (!result.success) { console.error(result.logs); }Bun.build将打包能力编程化适合集成进自定义构建脚本。关键选项splitting开启代码分割公共依赖提取为 chunk、external声明不打进产物的外部包如 react 交给 CDN、define在编译期替换全局常量、naming自定义产物命名模板[name]/[hash]/[ext]占位符。result.success与result.logs用于检查构建结果并输出诊断日志。8.3 编译为独立可执行文件# Create standalone executable bun build ./src/cli.ts --compile --outfile myapp # Cross-compile bun build ./src/cli.ts --compile --targetbun-linux-x64 --outfile myapp-linux bun build ./src/cli.ts --compile --targetbun-darwin-arm64 --outfile myapp-mac # With embedded assets bun build ./src/cli.ts --compile --outfile myapp --embed ./assets--compile将脚本连同运行时一起打包成单文件可执行程序目标机器无需安装 Bun。--target支持跨平台交叉编译如bun-linux-x64、bun-darwin-arm64--embed可将静态资源内嵌进二进制实现真正的一个文件即一个应用。9. 从 Node.js 迁移到 Bun9.1 Node.js API 兼容层// Most Node.js APIs work out of the box import fs from fs; import path from path; import crypto from crypto; // process is global console.log(process.cwd()); console.log(process.env.HOME); // Buffer is global const buf Buffer.from(hello); // __dirname and __filename work console.log(__dirname); console.log(__filename);Bun 提供了对 Node.js 核心模块fs/path/crypto、全局对象process/Buffer以及__dirname/__filename的兼容绝大多数现有 Node 代码可不改代码直接运行。9.2 标准迁移步骤# 1. Install Bun brew install oven-sh/bun/bun # 2. Replace package manager rm -rf node_modules package-lock.json bun install # 3. Update scripts in package.json # start: node index.js → start: bun run index.ts # test: jest → test: bun test # 4. Add Bun types bun add -d types/bun四步迁移法安装 Bun → 删除node_modules与package-lock.json后用bun install重建依赖生成bun.lockb→ 将 package.json 脚本中的node/jest等替换为bun run/bun test→ 安装types/bun获得类型支持。9.3 与 Node.js 的差异清单// ❌ Node.js specific (may not work) require(module) // Use import instead require.resolve(pkg) // Use import.meta.resolve __non_webpack_require__ // Not supported // ✅ Bun equivalents import pkg from pkg; const resolved import.meta.resolve(pkg); Bun.resolveSync(pkg, process.cwd()); // ❌ These globals differ process.hrtime() // Use Bun.nanoseconds() setImmediate() // Use queueMicrotask() // ✅ Bun-specific features const file Bun.file(./data.txt); // Fast file API Bun.serve({ port: 3000, fetch: ... }); // Fast HTTP server Bun.password.hash(password); // Built-in hashing迁移时需注意的差异点require()/require.resolve()属于 CJS 专属能力Bun 下改用 ESMimport与import.meta.resolve(pkg)同步解析可用Bun.resolveSyncprocess.hrtime()改用Bun.nanoseconds()获取纳秒级时间戳setImmediate()改用queueMicrotask()迁移完成后可积极采用Bun.file/Bun.serve/Bun.password等 Bun 原生 API 获得更优性能。10. 性能优化要点10.1 优先使用 Bun 原生 API// Slow (Node.js compat) import fs from fs/promises; const content await fs.readFile(./data.txt, utf-8); // Fast (Bun-native) const file Bun.file(./data.txt); const content await file.text();在性能敏感路径上Bun.file()相对fs/promises的readFile有显著的零拷贝与惰性读取优势——file.text()仅在需要时加载且BunFile对象本身不持有文件内容。10.2 用 Bun.serve 承载 HTTP// Dont: Express/Fastify (overhead) import express from express; const app express(); // Do: Bun.serve (native, 4-10x faster) Bun.serve({ fetch(req) { return new Response(Hello!); }, }); // Or use Elysia (Bun-optimized framework) import { Elysia } from elysia; new Elysia().get(/, () Hello!).listen(3000);文档口径下Bun.serve相比 Express/Fastify 有 4-10 倍吞吐提升实际倍数随负载与机器而异。对于轻量服务直接使用Bun.serve需要路由、校验等框架能力时推荐选用专为 Bun 优化的 Elysia 框架。10.3 生产环境务必打包压缩# Always bundle and minify for production bun build ./src/index.ts --outdir ./dist --minify --target node # Then run the bundle bun run ./dist/index.js生产部署前先bun build --minify产出压缩产物再运行可同时获得更小的启动体积与更快的加载时间--target node保证产物兼容常见 Node 运行环境若目标机已装 Bun 则可省去该参数。11. 快速参考速查表detailed-guide.md 末尾提供了一张覆盖全流程的速查表直接可复制使用TaskCommandInit projectbun initInstall depsbun installAdd packagebun add pkgRun scriptbun run scriptRun filebun run file.tsWatch modebun --watch run file.tsRun testsbun testBuildbun build ./src/index.ts --outdir ./distExecute pkgbunx pkg12. 在 agentic-awesome-skills 生态中使用该技能bun-development技能在仓库中遵循标准的SKILL.md references组织模式入口文件 SKILL.md 承载技能激活条件、适用场景、安全边界与限制说明完整实操材料存放于 references/detailed-guide.mdSKILL.md 通过相对链接指向它并要求执行技能前先通读详细指南仓库中还存在一份镜像副本 plugins/agentic-awesome-skills/skills/bun-development/结构与内容保持一致可根据插件分发体系按需加载。这与仓库中技能索引体系如 skills_index.json 与 data/skills_index.json所定义的技能元数据 详细参考分离规范一致——元数据用于 Agent 的快速匹配与调度详细指南用于执行时的深度加载从而在保持目录轻量化的同时不丢失操作细节。参照 docs/SKILL_ANATOMY.md 的说明这种入口 引用结构正是仓库推荐的技能编写范式。使用建议将本文中第 2 至第 11 节的命令与代码片段作为你的 Bun 开发速查手册当在 Agent 工作流中需要处理 Bun 相关任务时先加载 references/detailed-guide.md 获取完整规程再按 SKILL.md 的安全边界执行若环境验证、权限或成功标准不明确应主动向用户澄清而不是凭技能输出盲目行动。赞分享AI 技能AI 插件人工智能【免费下载链接】agentic-awesome-skillsAAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and planning, backed by 2,600 agentic skills. Includes CLI, local MCP, catalog, plugins, and Workbench.项目地址https://gitcode.com/GitHub_Trending/an/agentic-awesome-skills点击查看免费下载相关推荐Bun 开发实战指南基于 agentic-awesome-skills 技能库全面掌握 Bun 运行时Bun 开发实战指南基于 agentic awesome skills 技能库全面掌握 Bun 运行时 导读 本文是 AASagentic awesomeAI 技能AI 插件人工智能Azure Cosmos DB Java SDK 实战指南基于 agentic-awesome-skills 技能的全局分布式 NoSQL 开发Azure Cosmos DB Java SDK 实战指南基于 agentic awesome skills 技能的全局分布式 NoSQL 开发 本文以 agAI 技能AI 插件人工智能Agentic Awesome Skills 实战基于 Rube MCP 的 ActiveCampaign 自动化技能深度指南Agentic Awesome Skills 实战基于 Rube MCP 的 ActiveCampaign 自动化技能深度指南 ActiveCampaignAI 技能AI 插件人工智能上一篇G6 5.x 快速上手从零开始用 JavaScript 绘制你的第一张力导向图下一篇OpenLayers 10.2.0 版本解读Flow 粒子流图层、WMS 1.1.1 解析与瓦片缓存优化创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询