前端数据库 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

支持国内股票分析的AI智能开源项目(GitHub Star数量Top榜)

支持国内股票分析的AI智能开源项目(GitHub Star数量Top榜) 一、核心结论 GitHub上支持国内股票(A股)分析且Star数量靠前的AI智能开源项目,按Star数量降序排列依次为: 1. OpenBB(57.4k Star):开源金融数据平台,支持A股等多市场数据获取与AI辅助分析; 2. ai-hedge-fund(44.9k Star):AI对冲基金模拟系统,通过多智能体协作模拟投资大师策略,可适配A股; 3. FinGenius(新兴项目,Star快速增长):专为A股设计的多智能体博弈分析工具,融合16位AI专家协作; 4. daily_stock_analysis(5.5k Star):A股智能分析系统,基于大模型生成每日决策报告。 二、项目详细说明 1. OpenBB:开源金融数据与分析平台(57.4k Star) * 项目地址:https://github.

By Ne0inhk

TortoiseGit-小乌龟使用

1、通过共享文件夹复制Git需要的软件安装包。 1.1、快捷键win+R 输入 \\192.168.30.11 如下图: 图1-1 1.2、输入用户名:Administrator 密码:123,如图1-2 图1-2 1.3、进入之后拷贝Share 文件夹下的 “git小乌龟及中文包.zip”到自己本地目录解压, 如图1-2。 图1-3 2、安装Git相关软件   图2-1 2.1、先安装 “Git-2.41.0.3-64-bit.exe”,双击文件,选择安装目录(自定义),之后一直Next直到安装完成,如图2-2。 图2-2 2.2、再安装“

By Ne0inhk
【代码管理】在本地使用github和gitee之后,可能存在冲突,导致再次提交代码时提示Couldn‘t connect to server

【代码管理】在本地使用github和gitee之后,可能存在冲突,导致再次提交代码时提示Couldn‘t connect to server

大家好,我是全栈小5,欢迎来到《小5讲堂》。 这是《源代码管理工具》系列文章,每篇文章将以博主理解的角度展开讲解。 温馨提示:博主能力有限,理解水平有限,若有不对之处望指正! 目录 * 前言 * 错误提示 * 解决方案 * 方案1:临时关闭 Git 的代理设置(推荐先尝试) * 方案2:检查并启动代理服务 * 方案3:直接使用命令行取消代理后克隆 * 方案4:检查环境变量 * 针对 Windows 系统的具体操作 * 方法1:使用 Git Bash 或命令提示符 * 方法2:检查全局 Git 配置 * 验证解决方案 * 如果您确实需要代理 * 为什么会冲突 * 1. 代理配置冲突 * 问题原因: * 典型症状: * 2. 认证信息冲突 * SSH 密钥冲突:

By Ne0inhk

【GitHub项目推荐--OpenAkita:自我进化的开源AI助手框架】⭐⭐⭐

简介 OpenAkita 是一个开源的自我进化AI助手框架,由OpenAkita团队开发并维护。该项目以其独特的“永不放弃”的设计理念而闻名——正如其名所寓意的秋田犬一样,忠诚、可靠且持续学习。与其他AI助手不同,OpenAkita在用户关闭聊天后不会忘记一切,而是能够自主学习新技能、修复自身错误,并记住用户的所有信息。框架支持3分钟快速设置,仅需一个API密钥即可启动,提供8种预设人格、6种即时通讯平台集成,甚至具备发送表情包的能力,为AI助手注入了独特的“灵魂”。 核心价值: * 自我进化:AI助手在用户睡眠时自主学习、记忆巩固和错误修复 * 人格化体验:8种预设人格(女友、管家、Jarvis等)提供沉浸式交互 * 极简部署:桌面应用程序实现3分钟从安装到对话的完整流程 * 开放生态:基于Agent Skills和MCP开放标准,支持一键技能安装 技术定位:OpenAkita填补了传统静态AI助手与动态学习系统之间的空白。它不仅仅是一个对话工具,更是一个能够随时间推移而不断进化的智能伙伴。通过将记忆管理、自我检查和技能生成等能力内置到框架核心,它为开发者提供了一个构

By Ne0inhk