前端数据库 IndexedDB 详解:构建强大的离线Web应用

前端数据库 IndexedDB 详解:构建强大的离线Web应用

引言:为什么需要前端数据库?

在现代Web开发中,我们经常需要处理大量结构化数据。传统的localStoragesessionStorage虽然简单易用,但只能存储少量字符串数据,无法满足复杂应用的需求。IndexedDB应运而生——这是一个功能强大的浏览器内置数据库,支持存储大量结构化数据,提供索引、事务等高级功能,是实现离线应用、缓存机制和复杂数据处理的理想选择。

IndexedDB核心概念解析

1. 数据库(Database)

  • 每个源(协议+域名+端口)可以创建多个数据库
  • 每个数据库包含多个对象存储(类似于SQL中的表)

2. 对象存储(Object Store)

  • 存储键值对集合的主要容器
  • 键可以是路径、自增数字或自定义键生成器
  • 值可以是任何结构化可克隆对象

3. 索引(Index)

  • 允许高效查询对象存储中的数据
  • 可以基于对象属性创建多个索引
  • 支持唯一索引约束

4. 事务(Transaction)

  • 所有操作都在事务中执行
  • 三种模式:只读(readonly)、读写(readwrite)和版本变更(versionchange)
  • 提供原子性保证(全部成功或全部失败)

5. 游标(Cursor)

  • 用于遍历对象存储或索引中的记录
  • 支持方向控制(前进/后退)和范围查询

完整代码示例:实现一个联系人管理器

1. 初始化数据库

// 打开或创建数据库const dbName ='ContactDB';const dbVersion =1;const request = indexedDB.open(dbName, dbVersion); request.onerror=(event)=>{  console.error('数据库打开失败:', event.target.error);}; request.onupgradeneeded=(event)=>{ const db = event.target.result;// 创建对象存储(如果不存在)if(!db.objectStoreNames.contains('contacts')){ const store = db.createObjectStore('contacts',{  keyPath:'id', autoIncrement:true});// 创建索引 store.createIndex('name','name',{  unique:false}); store.createIndex('email','email',{  unique:true}); store.createIndex('phone','phone',{  unique:false}); store.createIndex('group','group',{  unique:false});}}; request.onsuccess=(event)=>{ const db = event.target.result; console.log('数据库成功打开');// 存储数据库引用供后续使用 window.contactDB = db;};

2. 添加联系人

functionaddContact(contact){ returnnew

Read more

Sunday Robotics反套路研发:先迭代100次数据手套,再造Memo轮式机器人,以 数据优先破局服务机器人困局

Sunday Robotics反套路研发:先迭代100次数据手套,再造Memo轮式机器人,以 数据优先破局服务机器人困局

摘要:Sunday Robotics 颠覆行业 “先造机器人再控场” 逻辑,以 “手套优先” 策略迭代 100 次 UMI 技能捕捉手套,采集百万级人类操作数据后才设计轮式机器人 Memo。依托被动稳定轮基、75% 人类操作速度、柔顺控制技术,聚焦家庭 manipulation 核心需求,2026 年启动 “Founding Family” Beta 计划,以商品级供应链控制成本,差异化对抗 Tesla/Figure 双足人形机器人,重新定义服务机器人研发范式。 引言:不先造机器人,先做 100 次手套?Sunday 改写服务机器人研发规则 当 Tesla、Figure 等企业扎堆冲刺双足人形机器人的 “跑跳能力” 时,Sunday Robotics 走出了一条反直觉的道路:

项目笔记:Webgoat靶场通关教程之Broken Access Control

0x01.Broken Access Control(失效的访问控制)        1.会话劫持          接着上篇文章继续讲,打开网页显示试图预测“hijack_cookie”值 一看就是要进行cookie爆破,随便填点击登录然后查看cookie 记下来,之后删除cookie,重复个两三次观察规律 规律推导:前缀43999087440979xxxx为固定模式,后缀17631xxxxxxxx为时间戳或递增计数器。 暴力破解有效Cookie 打开抓包软件,随便填一些数字登录抓包 * 工具选择:使用Burp Suite的Intruder模块或WebScarab进行枚举攻击。 * 因为难度较低且有规律可循,所以自己制定简单列表可以否则设置攻击载荷太长了     2.不安全的直接对象引用       直接对象引用是指应用程序使用客户端提供的输入来访问数据和对象,当引用未得到正确处理并允许绕过授权或披露可用于 执行用户不应执行或访问的作或访问数据。 假设作为用户,您查看您的个人资料,URL 如下所示: https://some.company.tld/app/u

网页抓取(Web Scraping)完整技术指南:从原理到实战

在数据驱动的时代,结构化信息已成为企业决策、AI 训练与市场分析的核心资源。网页抓取(Web Scraping) 作为从非结构化网页中提取结构化数据的关键技术,广泛应用于电商、金融、舆情监测、学术研究等领域。 本文将系统解析网页抓取的工作原理、工具链、反爬对抗策略与法律边界,并提供可落地的工程建议。 一、什么是网页抓取? 网页抓取是指通过程序自动访问网页,解析 HTML/JSON 内容,并将目标数据提取、转换为结构化格式(如 CSV、数据库记录)的过程。 与网络爬虫(Crawler)的区别:爬虫:广度优先遍历全站链接(如搜索引擎);抓取:深度聚焦特定页面的数据字段(如商品价格、评论)。 典型应用场景包括: * 电商比价(Amazon、Shopee 商品监控) * 招聘数据聚合(职位趋势分析) * 社交媒体舆情监测(公开评论情感分析) * 学术数据采集(论文元数据批量下载)

如何快速上手SVGA动画播放器:移动端Web动画的完整指南

如何快速上手SVGA动画播放器:移动端Web动画的完整指南 【免费下载链接】SVGAPlayer-Web-Lite 项目地址: https://gitcode.com/gh_mirrors/sv/SVGAPlayer-Web-Lite 在移动端Web开发中,流畅的动画效果对于提升用户体验至关重要。SVGAPlayer-Web-Lite作为一款专为移动端设计的轻量级动画播放器,以其卓越的性能表现和简单的使用方式,成为开发者的首选工具。本文将为您详细介绍如何快速上手这一强大的动画解决方案。 什么是SVGA播放器? SVGAPlayer-Web-Lite是一个专门针对移动端Web环境优化的动画播放器,它支持SVGA 2.x格式文件,能够在Android 4.4+和iOS 9+系统上稳定运行。相比传统动画方案,它具有以下核心优势: * 极致的轻量化:打包后体积小于60KB,gzip压缩后仅18KB * 出色的性能表现:采用多线程WebWorker解析和OffscreenCanvas技术 * 强大的兼容性:支持现代浏览器和移动设备 快速开始:5分钟完成第一个动画 安装步骤