当前位置: 首页 > article >正文

前端 PWA 新方法:别再忽视 PWA 了

前端 PWA 新方法别再忽视 PWA 了什么是前端 PWA 新方法前端 PWA 新方法是指在前端开发中随着技术的发展出现的新的 PWAProgressive Web App技术和方法。别以为 PWA 只是添加一个 manifest.json 文件那是十年前的玩法了。为什么需要关注前端 PWA 新方法用户体验提供类原生应用的用户体验离线访问支持离线访问提高应用可靠性安装能力可以安装到主屏幕提高用户粘性推送通知支持推送通知提高用户engagement性能提高应用性能减少加载时间前端 PWA 新方法1. manifest.json 配置使用现代 manifest.json 配置提供更好的安装体验。// manifest.json { name: My PWA App, short_name: My App, description: A Progressive Web App, start_url: /, display: standalone, background_color: #ffffff, theme_color: #007bff, icons: [ { src: /icons/icon-72x72.png, sizes: 72x72, type: image/png, purpose: any maskable }, { src: /icons/icon-96x96.png, sizes: 96x96, type: image/png, purpose: any maskable }, { src: /icons/icon-128x128.png, sizes: 128x128, type: image/png, purpose: any maskable }, { src: /icons/icon-144x144.png, sizes: 144x144, type: image/png, purpose: any maskable }, { src: /icons/icon-152x152.png, sizes: 152x152, type: image/png, purpose: any maskable }, { src: /icons/icon-192x192.png, sizes: 192x192, type: image/png, purpose: any maskable }, { src: /icons/icon-384x384.png, sizes: 384x384, type: image/png, purpose: any maskable }, { src: /icons/icon-512x512.png, sizes: 512x512, type: image/png, purpose: any maskable } ], orientation: portrait, categories: [productivity, utilities], screenshots: [ { src: /screenshots/screenshot1.png, sizes: 1280x720, type: image/png }, { src: /screenshots/screenshot2.png, sizes: 1280x720, type: image/png } ], shortcuts: [ { name: New Note, short_name: New, description: Create a new note, url: /new-note, icons: [{ src: /icons/shortcut-icon.png, sizes: 192x192 }] }, { name: My Notes, short_name: Notes, description: View my notes, url: /my-notes, icons: [{ src: /icons/shortcut-icon.png, sizes: 192x192 }] } ], iarc_rating_id: e84b072d-71b3-4d3e-86ae-31a8ce4e53b7 }2. Service Worker 配置使用现代 Service Worker 配置提供更好的离线体验。// service-worker.js const CACHE_NAME my-pwa-cache-v1; const ASSETS [ /, /index.html, /manifest.json, /service-worker.js, /css/style.css, /js/main.js, /icons/icon-512x512.png ]; // 安装 Service Worker self.addEventListener(install, (event) { event.waitUntil( caches.open(CACHE_NAME) .then((cache) { console.log(Opened cache); return cache.addAll(ASSETS); }) ); self.skipWaiting(); }); // 激活 Service Worker self.addEventListener(activate, (event) { const cacheWhitelist [CACHE_NAME]; event.waitUntil( caches.keys().then((cacheNames) { return Promise.all( cacheNames.map((cacheName) { if (cacheWhitelist.indexOf(cacheName) -1) { return caches.delete(cacheName); } }) ); }) ); self.clients.claim(); }); // 拦截网络请求 self.addEventListener(fetch, (event) { event.respondWith( caches.match(event.request) .then((response) { if (response) { return response; } return fetch(event.request) .then((response) { if (!response || response.status ! 200 || response.type ! basic) { return response; } const responseToCache response.clone(); caches.open(CACHE_NAME) .then((cache) { cache.put(event.request, responseToCache); }); return response; }) .catch(() { if (event.request.mode navigate) { return caches.match(/offline.html); } }); }) ); }); // 推送通知 self.addEventListener(push, (event) { const data event.data.json(); const options { body: data.body, icon: /icons/icon-192x192.png, badge: /icons/badge.png, vibrate: [100, 50, 100], data: { url: data.url }, actions: [ { action: view, title: View Details }, { action: close, title: Close } ] }; event.waitUntil( self.registration.showNotification(data.title, options) ); }); // 通知点击 self.addEventListener(notificationclick, (event) { event.notification.close(); if (event.action view) { event.waitUntil( clients.openWindow(event.notification.data.url) ); } });3. PWA 安装提示使用现代 PWA 安装提示提供更好的安装体验。// 检测是否支持 PWA 安装 let deferredPrompt; window.addEventListener(beforeinstallprompt, (e) { e.preventDefault(); deferredPrompt e; // 显示自定义安装按钮 document.getElementById(install-btn).style.display block; }); // 安装 PWA document.getElementById(install-btn).addEventListener(click, async () { if (!deferredPrompt) return; deferredPrompt.prompt(); const { outcome } await deferredPrompt.userChoice; console.log(User ${outcome accepted ? accepted : dismissed} the install prompt); deferredPrompt null; document.getElementById(install-btn).style.display none; }); // 检测 PWA 是否安装 window.addEventListener(appinstalled, (evt) { console.log(PWA was installed); document.getElementById(install-btn).style.display none; }); // 检测 PWA 运行环境 function isPWA() { return window.matchMedia((display-mode: standalone)).matches || window.navigator.standalone || document.referrer.includes(android-app://); } if (isPWA()) { console.log(Running as PWA); // 隐藏安装按钮 document.getElementById(install-btn).style.display none; }4. PWA 离线功能使用现代 PWA 离线功能提供更好的离线体验。// 检测网络状态 function updateOnlineStatus() { const status navigator.onLine ? online : offline; document.getElementById(status).textContent You are currently ${status}; if (!navigator.onLine) { document.getElementById(offline-message).style.display block; } else { document.getElementById(offline-message).style.display none; } } window.addEventListener(online, updateOnlineStatus); window.addEventListener(offline, updateOnlineStatus); // 初始检测 updateOnlineStatus(); // 离线数据存储 function saveDataOffline(data) { localStorage.setItem(offline-data, JSON.stringify(data)); console.log(Data saved offline); } function loadDataOffline() { const data localStorage.getItem(offline-data); if (data) { console.log(Loaded data from offline storage); return JSON.parse(data); } return null; } // 同步离线数据 async function syncOfflineData() { if (navigator.onLine) { const offlineData loadDataOffline(); if (offlineData) { try { const response await fetch(/api/sync, { method: POST, headers: { Content-Type: application/json }, body: JSON.stringify(offlineData) }); if (response.ok) { localStorage.removeItem(offline-data); console.log(Offline data synced); } } catch (error) { console.error(Error syncing offline data:, error); } } } } // 监听网络恢复 window.addEventListener(online, syncOfflineData); // 定期同步 setInterval(syncOfflineData, 60000); // 每 60 秒尝试同步5. PWA 推送通知使用现代 PWA 推送通知提供更好的用户engagement。// 请求推送通知权限 async function requestNotificationPermission() { if (Notification in window) { const permission await Notification.requestPermission(); if (permission granted) { console.log(Notification permission granted); await subscribeToPush(); } else { console.log(Notification permission denied); } } } // 订阅推送通知 async function subscribeToPush() { if (serviceWorker in navigator PushManager in window) { const registration await navigator.serviceWorker.ready; let subscription await registration.pushManager.getSubscription(); if (!subscription) { subscription await registration.pushManager.subscribe({ userVisibleOnly: true, applicationServerKey: urlBase64ToUint8Array(YOUR_PUBLIC_VAPID_KEY) }); // 发送订阅信息到服务器 await sendSubscriptionToServer(subscription); } } } // 发送订阅信息到服务器 async function sendSubscriptionToServer(subscription) { try { const response await fetch(/api/push-subscribe, { method: POST, headers: { Content-Type: application/json }, body: JSON.stringify(subscription) }); if (response.ok) { console.log(Subscription sent to server); } } catch (error) { console.error(Error sending subscription:, error); } } // 辅助函数将 Base64 URL 转换为 Uint8Array function urlBase64ToUint8Array(base64String) { const padding .repeat((4 - base64String.length % 4) % 4); const base64 (base64String padding) .replace(/-/g, ) .replace(/_/g, /); const rawData window.atob(base64); const outputArray new Uint8Array(rawData.length); for (let i 0; i rawData.length; i) { outputArray[i] rawData.charCodeAt(i); } return outputArray; } // 发送推送通知 async function sendNotification() { try { const response await fetch(/api/send-notification, { method: POST, headers: { Content-Type: application/json }, body: JSON.stringify({ title: New Notification, body: This is a test notification, url: / }) }); if (response.ok) { console.log(Notification sent); } } catch (error) { console.error(Error sending notification:, error); } }6. PWA 性能优化使用现代 PWA 性能优化提高应用性能。// 预缓存关键资源 self.addEventListener(install, (event) { event.waitUntil( caches.open(my-pwa-cache-v1) .then((cache) { return cache.addAll([ /, /index.html, /manifest.json, /service-worker.js, /css/style.css, /js/main.js, /icons/icon-512x512.png ]); }) ); }); // 缓存策略 self.addEventListener(fetch, (event) { const url new URL(event.request.url); // 静态资源缓存优先 if (url.pathname.startsWith(/css/) || url.pathname.startsWith(/js/) || url.pathname.startsWith(/icons/)) { event.respondWith( caches.match(event.request) .then((response) { return response || fetch(event.request) .then((response) { const responseToCache response.clone(); caches.open(my-pwa-cache-v1) .then((cache) { cache.put(event.request, responseToCache); }); return response; }); }) ); } // API 请求网络优先 else if (url.pathname.startsWith(/api/)) { event.respondWith( fetch(event.request) .then((response) { return response; }) .catch(() { return caches.match(/offline.html); }) ); } // 页面请求缓存优先回退到网络 else { event.respondWith( caches.match(event.request) .then((response) { return response || fetch(event.request) .then((response) { const responseToCache response.clone(); caches.open(my-pwa-cache-v1) .then((cache) { cache.put(event.request, responseToCache); }); return response; }) .catch(() { return caches.match(/offline.html); }); }) ); } }); // 后台同步 self.addEventListener(sync, (event) { if (event.tag sync-data) { event.waitUntil(syncData()); } }); async function syncData() { // 同步数据逻辑 console.log(Background sync triggered); } // 客户端注册后台同步 async function registerSync() { if (serviceWorker in navigator SyncManager in window) { const registration await navigator.serviceWorker.ready; await registration.sync.register(sync-data); console.log(Background sync registered); } }7. PWA 可访问性使用现代 PWA 可访问性提高应用可访问性。// 可访问性最佳实践 // 1. 语义化 HTML // 使用语义化 HTML 元素 // 2. ARIA 标签 // 为非语义化元素添加 ARIA 标签 // 3. 键盘导航 // 确保所有交互元素可通过键盘访问 // 4. 颜色对比度 // 确保文本与背景的对比度符合 WCAG 标准 // 5. 屏幕阅读器支持 // 确保应用可被屏幕阅读器正确读取 // 6. 焦点管理 // 合理管理焦点提高键盘导航体验 // 7. 错误处理 // 为错误提供清晰的反馈 // 8. 字体大小 // 允许用户调整字体大小 // 9. 动画控制 // 提供关闭动画的选项减少对用户的干扰 // 10. 测试 // 使用可访问性测试工具测试应用 // 可访问性测试工具 // - Lighthouse // - axe-core // - WAVE // - Accessibility Insights // 示例使用 axe-core 进行可访问性测试 import axe from axe-core; axe.run(document, (err, results) { if (err) { console.error(Error running axe:, err); return; } if (results.violations.length 0) { console.log(Accessibility violations:, results.violations); } else { console.log(No accessibility violations found!); } });8. PWA 分析和监控使用现代 PWA 分析和监控了解应用使用情况。// 分析工具集成 // Google Analytics // gtag.js window.dataLayer window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag(js, new Date()); gtag(config, UA-XXXXXXXX-X); // Google Analytics 4 // gtag.js window.dataLayer window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag(js, new Date()); gtag(config, G-XXXXXXXXXX); // PWA 特定事件跟踪 // 安装事件 gtag(event, pwa_install, { event_category: PWA, event_label: User installed PWA }); // 离线事件 gtag(event, pwa_offline, { event_category: PWA, event_label: User went offline }); // 推送通知事件 gtag(event, pwa_notification, { event_category: PWA, event_label: User received notification }); // 监控 Service Worker // 错误监控 serviceWorker.addEventListener(error, (error) { console.error(Service Worker error:, error); // 发送错误到监控服务 }); // 性能监控 self.addEventListener(fetch, (event) { const start performance.now(); event.respondWith( fetch(event.request) .then((response) { const end performance.now(); const duration end - start; console.log(Fetch ${event.request.url} took ${duration}ms); return response; }) ); }); // 自定义监控 function sendMetric(name, value) { fetch(/api/metrics, { method: POST, headers: { Content-Type: application/json }, body: JSON.stringify({ name, value, timestamp: new Date().toISOString() }) }); } // 监控安装率 document.getElementById(install-btn).addEventListener(click, () { sendMetric(pwa_install_attempt, 1); }); window.addEventListener(appinstalled, () { sendMetric(pwa_install_success, 1); });9. PWA 部署和更新使用现代 PWA 部署和更新确保应用及时更新。// Service Worker 更新 self.addEventListener(install, (event) { self.skipWaiting(); }); self.addEventListener(activate, (event) { self.clients.claim(); // 清理旧缓存 const cacheWhitelist [my-pwa-cache-v1]; event.waitUntil( caches.keys().then((cacheNames) { return Promise.all( cacheNames.map((cacheName) { if (cacheWhitelist.indexOf(cacheName) -1) { return caches.delete(cacheName); } }) ); }) ); }); // 客户端检测更新 async function checkForUpdates() { if (serviceWorker in navigator) { const registration await navigator.serviceWorker.ready; registration.addEventListener(updatefound, () { const newWorker registration.installing; newWorker.addEventListener(statechange, () { if (newWorker.state installed navigator.serviceWorker.controller) { // 提示用户刷新页面 document.getElementById(update-notification).style.display block; } }); }); } } // 触发更新 document.getElementById(refresh-btn).addEventListener(click, () { window.location.reload(); }); // 定期检查更新 setInterval(checkForUpdates, 60000); // 每 60 秒检查一次 // 部署策略 // 1. 版本控制 // 使用版本号管理 Service Worker 和缓存 // 2. 渐进式部署 // 先部署到部分用户再逐步扩大范围 // 3. 回滚机制 // 准备回滚方案应对部署失败 // 4. 监控 // 部署后监控应用状态 // 5. 文档 // 为部署和更新流程编写文档10. PWA 最佳实践// PWA 最佳实践 // 1. 响应式设计 // 确保应用在不同设备上正常显示 // 2. 性能优化 // 优化应用性能减少加载时间 // 3. 离线功能 // 实现离线访问提高应用可靠性 // 4. 安装体验 // 提供良好的安装体验鼓励用户安装 // 5. 推送通知 // 合理使用推送通知提高用户engagement // 6. 可访问性 // 确保应用可被所有用户访问 // 7. 安全性 // 确保应用安全防止攻击 // 8. 监控和分析 // 监控应用使用情况持续改进 // 9. 部署和更新 // 确保应用及时更新避免用户使用旧版本 // 10. 用户体验 // 提供类原生应用的用户体验前端 PWA 最佳实践1. 核心功能响应式设计确保应用在不同设备上正常显示离线访问支持离线访问提高应用可靠性安装能力可以安装到主屏幕提高用户粘性推送通知支持推送通知提高用户engagement性能提高应用性能减少加载时间2. 技术实现manifest.json配置 PWA 元数据提供安装信息Service Worker实现离线缓存、推送通知等功能HTTPS使用 HTTPS确保应用安全Web App Manifest配置应用图标、名称等信息Push API实现推送通知功能Background Sync实现后台数据同步IndexedDB存储离线数据Cache API缓存静态资源3. 性能优化资源优化压缩、合并、缓存静态资源代码分割按需加载代码减少初始加载时间预缓存预缓存关键资源提高应用启动速度懒加载懒加载非关键资源减少初始加载时间CDN使用 CDN提高资源加载速度HTTP/2使用 HTTP/2提高资源加载效率WebP使用 WebP 格式图片减少图片大小字体优化优化字体加载减少阻塞时间4. 用户体验安装提示提供自定义安装提示鼓励用户安装启动画面配置启动画面提高应用启动体验离线页面提供离线页面提高离线体验错误处理提供清晰的错误提示提高用户体验导航体验优化导航体验提供类原生应用的导航触觉反馈使用振动 API提供触觉反馈深色模式支持深色模式提高用户体验无障碍确保应用可被所有用户访问5. 安全性HTTPS使用 HTTPS确保应用安全Content Security Policy使用 CSP防止 XSS 攻击Subresource Integrity使用 SRI确保资源完整性Permissions合理请求权限保护用户隐私Data Protection保护用户数据防止数据泄露Secure Headers使用安全 HTTP 头提高应用安全性6. 监控和分析Google Analytics使用 Google Analytics分析用户行为Lighthouse使用 Lighthouse评估 PWA 质量Web Vitals监控核心 Web 性能指标Error Monitoring监控应用错误及时发现问题Usage Analytics分析应用使用情况持续改进7. 部署和更新版本控制使用版本号管理 Service Worker 和缓存渐进式部署先部署到部分用户再逐步扩大范围回滚机制准备回滚方案应对部署失败自动化部署使用 CI/CD实现自动化部署更新策略制定合理的更新策略确保用户使用最新版本8. 跨平台兼容性浏览器支持确保应用在主流浏览器中正常运行设备支持确保应用在不同设备上正常运行操作系统支持确保应用在不同操作系统中正常运行屏幕尺寸确保应用在不同屏幕尺寸下正常显示网络条件确保应用在不同网络条件下正常运行9. 开发工具Lighthouse评估 PWA 质量Workbox简化 Service Worker 开发PWABuilder快速创建 PWAChrome DevTools调试 PWAWeb App Manifest Validator验证 manifest.jsonService Worker Debugger调试 Service Worker10. 最佳实践总结核心功能实现响应式设计、离线访问、安装能力、推送通知等核心功能技术实现正确实现 manifest.json、Service Worker、HTTPS 等技术性能优化优化应用性能减少加载时间用户体验提供良好的用户体验鼓励用户安装和使用安全性确保应用安全防止攻击监控和分析监控应用使用情况持续改进部署和更新确保应用及时更新避免用户使用旧版本跨平台兼容性确保应用在不同平台上正常运行开发工具使用合适的开发工具提高开发效率持续改进持续改进 PWA提高应用质量前端 PWA 案例1. 案例一电商 PWA某电商网站使用 PWA 技术实现了以下功能离线访问支持离线浏览商品和购物车安装能力可以安装到主屏幕提高用户粘性推送通知发送订单状态和促销信息通知性能优化优化应用性能减少加载时间响应式设计确保应用在不同设备上正常显示通过 PWA 技术该电商网站的用户留存率提高了 30%转化率提高了 20%。2. 案例二新闻 PWA某新闻网站使用 PWA 技术实现了以下功能离线阅读支持离线阅读新闻内容安装能力可以安装到主屏幕方便用户访问推送通知发送突发新闻和个性化新闻通知性能优化优化应用性能减少加载时间响应式设计确保应用在不同设备上正常显示通过 PWA 技术该新闻网站的页面加载时间减少了 40%用户停留时间增加了 50%。3. 案例三工具 PWA某工具类应用使用 PWA 技术实现了以下功能离线使用支持离线使用核心功能安装能力可以安装到主屏幕提高用户粘性推送通知发送任务提醒和更新通知性能优化优化应用性能减少加载时间响应式设计确保应用在不同设备上正常显示通过 PWA 技术该工具类应用的用户活跃度提高了 60%用户满意度提高了 40%。总结前端 PWA 是现代前端开发的重要组成部分它可以提高用户体验、离线访问能力、安装能力、推送通知能力和性能。别再忽视 PWA 了manifest.json 配置、Service Worker 配置、PWA 安装提示、离线功能、推送通知、性能优化、可访问性、分析和监控、部署和更新等现代 PWA 技术已经提供了更强大、更高效的 PWA 能力。记住PWA 不仅仅是技术问题还包括用户体验、性能优化、安全性、监控和分析、部署和更新等多个方面。你需要综合考虑这些因素才能创建出高质量的 PWA 应用。别再忽视前端 PWA 了它是前端开发的必备技能

相关文章:

前端 PWA 新方法:别再忽视 PWA 了

前端 PWA 新方法:别再忽视 PWA 了 什么是前端 PWA 新方法? 前端 PWA 新方法是指在前端开发中,随着技术的发展,出现的新的 PWA(Progressive Web App)技术和方法。别以为 PWA 只是添加一个 manifest.json 文件…...

前端微前端新方法:别再用传统的单体应用了

前端微前端新方法:别再用传统的单体应用了 什么是前端微前端新方法? 前端微前端新方法是指在前端开发中,随着技术的发展,出现的新的微前端技术和方法。别以为微前端只是简单的iframe集成,那是十年前的玩法了。 为什么需…...

SEED-VII数据集实战:5步搞定情感脑电图分析(附Python代码)

SEED-VII数据集实战:5步搞定情感脑电图分析(附Python代码) 第一次接触SEED-VII数据集时,我被它复杂的文件结构和多维度的情感标注搞得晕头转向。作为一个专注情感计算领域三年的研究者,我深知优质数据集对算法开发的重…...

FT8440A-RT电源芯片在小家电与智能家居中的高效应用(典型电路设计与优化)

1. FT8440A-RT电源芯片的核心特性解析 FT8440A-RT这颗非隔离PWM功率开关芯片,我在智能窗帘电机项目里用了不下500片。最让我惊喜的是它用FB脚就能搞定两种电压输出——悬空时输出12V300mA,接地时输出18V250mA。这种设计特别适合需要双电压档位的小家电&a…...

3步解锁Cursor Pro高级功能:告别AI编程工具使用限制

3步解锁Cursor Pro高级功能:告别AI编程工具使用限制 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your trial…...

从密码锁到电压表:深入浅出聊聊8086系统中8253定时器的几种经典用法

从密码锁到电压表:深入浅出聊聊8086系统中8253定时器的几种经典用法 在嵌入式系统开发中,精确的时间控制往往决定着整个项目的成败。想象一下,当你设计的密码锁需要在输入错误时精确延时3秒才触发报警,或者交通灯系统需要以毫秒级…...

XB5608A单节锂离子/锂聚合物可充电电池组保护芯片

概述 XB5608A 产品 是单节锂离子/锂聚合物可充 电电池组保护的高集成度解决方案。 XB5608A 包括了先进的功率 MOSFET,高精度的电压检测电路和延时电路。 XB5608A 使用一个超薄 SOT23-5 封装和只 有一个外部器件,使电池的保护电路空间 最小化。这使得该器件非常适合应…...

绿色机器学习系统综述:(三)算法策略与测量工具

摘要 本文是对发表在《Artificial Intelligence Review》期刊上的论文"A systematic review of Green Machine Learning: practices and challenges for sustainability"的文献精读第三篇。该论文由Samara Santos、Andr L. C. Ottoni、Rita Borgo、Danton Ferreira和…...

OpenClaw SEO批量投稿:自动提交博客到各大技术平台,扩大曝光

OpenClaw SEO批量投稿:技术博主的内容分发革命在信息爆炸的数字时代,内容创作不再是孤立的战场。一篇精心打磨的技术博客,其价值不仅在于创作本身,更在于能否精准触达目标受众。然而,技术博主常常面临一个困境&#xf…...

终极指南:如何用Fan Control免费软件彻底解决电脑风扇噪音问题

终极指南:如何用Fan Control免费软件彻底解决电脑风扇噪音问题 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Tre…...

gprMax实战指南:5大技巧实现专业级地质雷达电磁波仿真

gprMax实战指南:5大技巧实现专业级地质雷达电磁波仿真 【免费下载链接】gprMax gprMax is open source software that simulates electromagnetic wave propagation using the Finite-Difference Time-Domain (FDTD) method for numerical modelling of Ground Pene…...

收藏!2026“人形机器人打工元年”,程序员/小白必看的AI大模型入门风口

刷到#2026被称人形机器人打工元年#这条热搜时,相信不少程序员和技术小白都和我一样愣了一下——曾只出现在科幻片里的人形机器人,如今真的批量走进工厂,开始“打工”了。 很多人觉得这只是噱头,但实际情况是,这个说法绝…...

收藏!小白程序员快速上手大模型:揭秘Coding Agent的核心模块与实战技巧

本文深入剖析了Coding Agent的核心模块,重点介绍了Agent Harness在提升LLM应用效能中的关键作用。文章详细阐述了Coding Harness的六大核心组件:实时仓库上下文、prompt上下文组装与Cache复用、工具访问与使用、上下文管理、结构化会话记忆、Subagent任务…...

从ASR到VLM再到跨模态记忆建模:2026奇点大会定义的多模态直播互动技术栈(含开源替代方案清单)

第一章:从ASR到VLM再到跨模态记忆建模:2026奇点大会定义的多模态直播互动技术栈(含开源替代方案清单) 2026奇点智能技术大会(https://ml-summit.org) 2026奇点大会首次系统性地将直播互动技术解耦为三层演进式能力栈&#xff1a…...

【STM32项目实战】从零构建多功能嵌入式音频系统:解码、交互与扩展

1. 项目背景与核心目标 第一次接触STM32开发板时,我就被它强大的扩展能力所吸引。作为一个嵌入式开发者,最令人兴奋的莫过于用一块芯片搭建出功能丰富的完整系统。今天要分享的这个多功能音频系统项目,正是基于STM32F103系列芯片,…...

嵌入式Linux远程Shell新选择:Rtty对比SSH/WebSSH的实战体验与配置详解

嵌入式Linux远程Shell新选择:Rtty对比SSH/WebSSH的实战体验与配置详解 当你在凌晨三点收到现场设备告警,却发现客户防火墙阻断了所有SSH端口时;当你需要同时监控分布在三个不同城市的设备终端,却苦于没有统一管理界面时——传统远…...

IMX6ULL驱动加载全流程拆解:从insmod到/dev节点,你的printk为什么没打印?

IMX6ULL驱动加载全流程拆解:从insmod到/dev节点,你的printk为什么没打印? 当你终于完成了一个IMX6ULL的Linux驱动编写,编译生成.ko文件后,满怀期待地通过NFS挂载到开发板,执行insmod命令——终端显示加载成…...

别再自己编译了!用我打包好的静态库,5分钟在STM32F103上跑通micro-ROS

5分钟在STM32F103上实现micro-ROS通信:开箱即用解决方案 当嵌入式开发者第一次接触micro-ROS时,往往会被其复杂的编译环境和依赖关系所困扰。特别是对于那些希望快速验证ROS 2与嵌入式设备通信功能的开发者来说,从零开始搭建micro-ROS开发环…...

用STM32F103和OV7725做个“有人就拍”的监控器:从AD17画原理图到SD卡存图全流程

用STM32F103和OV7725打造智能监控系统:从硬件设计到图像存储全解析 在智能家居和安防领域,低成本、高效率的监控解决方案一直备受关注。本文将带你从零开始,使用STM32F103微控制器和OV7725摄像头模块,构建一个"有人就拍"…...

【2025实战指南】Kali Linux虚拟机部署与高效配置全解析

1. 为什么选择Kali Linux 2025虚拟机? 如果你对网络安全感兴趣,Kali Linux绝对是你绕不开的一个工具。作为最受欢迎的渗透测试发行版,2025版带来了更强大的工具链和更稳定的性能。我十年前第一次接触Kali时还是个小白,现在回想起来…...

如何永久保存你的微信聊天记录:免费开源工具完整指南

如何永久保存你的微信聊天记录:免费开源工具完整指南 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChat…...

微信小程序/UniApp蓝牙开发:如何优雅地封装一个可复用的蓝牙通信库(Vue3 Composition API)

Vue3UniApp蓝牙通信库架构设计:从零封装高可用BLE管理器 在物联网应用爆发式增长的今天,蓝牙低能耗(BLE)技术已成为连接智能设备的首选方案。作为前端开发者,当我们面对需要同时控制多台蓝牙打印机、门锁和传感器的商业…...

RimWorld Mod制作避坑指南:从零开始创建自定义物品(以手办为例)

RimWorld Mod制作避坑指南:从零开始创建自定义物品(以手办为例) 当你在RimWorld的世界里看腻了那些千篇一律的艺术雕塑,是否想过亲手打造一批独特的手办来装点殖民地?作为一款深度沙盒游戏,RimWorld的Mod开…...

为什么你的RAG系统召回后生成卡顿3秒?——向量检索与LLM解码协同优化(附真实Trace火焰图)

第一章:为什么你的RAG系统召回后生成卡顿3秒?——向量检索与LLM解码协同优化(附真实Trace火焰图) 2026奇点智能技术大会(https://ml-summit.org) 在真实生产环境中,RAG系统常出现“检索完成→等待3秒→LLM才开始流式…...

3分钟魔法:让Navicat Premium试用期无限续杯的神奇脚本

3分钟魔法:让Navicat Premium试用期无限续杯的神奇脚本 【免费下载链接】navicat-premium-reset-trial Reset macOS Navicat Premium 15/16/17 app remaining trial days 项目地址: https://gitcode.com/gh_mirrors/na/navicat-premium-reset-trial 你是否曾…...

5G NR新手必看:PBCH中的MIB数据解析与实战应用指南

5G NR新手必看:PBCH中的MIB数据解析与实战应用指南 当你第一次接触5G NR网络时,可能会被各种专业术语和复杂流程搞得晕头转向。作为网络初始接入的关键环节,PBCH(物理广播信道)中的MIB(主信息块&#xff09…...

Python项目打包神器Nuitka实战:如何用一条命令搞定PyQt5应用的发布

Python项目打包神器Nuitka实战:如何用一条命令搞定PyQt5应用的发布 在Python开发领域,将代码打包成可执行文件一直是个令人头疼的问题。特别是对于PyQt5这类GUI应用,传统的打包工具往往会产生体积臃肿的二进制文件,或者遇到各种依…...

如何用ExplorerPatcher在5分钟内让Windows 11变回你熟悉的模样

如何用ExplorerPatcher在5分钟内让Windows 11变回你熟悉的模样 【免费下载链接】ExplorerPatcher This project aims to enhance the working environment on Windows 项目地址: https://gitcode.com/GitHub_Trending/ex/ExplorerPatcher 你是不是刚升级到Windows 11&am…...

B站会员购抢票神器:新手也能轻松掌握的自动化购票工具

B站会员购抢票神器:新手也能轻松掌握的自动化购票工具 【免费下载链接】biliTickerBuy b站会员购购票辅助工具 项目地址: https://gitcode.com/GitHub_Trending/bi/biliTickerBuy 还在为抢不到B站会员购的漫展门票而烦恼吗?biliTickerBuy是一款开…...

2025终极网盘直链下载助手完整使用指南:告别限速,轻松获取高速下载链接

2025终极网盘直链下载助手完整使用指南:告别限速,轻松获取高速下载链接 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里…...