首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JavaScript IndexedDB 完整指南

你通常会使用 MySQL、Postgres、MongoDB、Neo4j、ArangoDB 等数据库来处理这些存储,但如果你希望应用程序脱机工作呢?...如果你正在使用 VS Code,可以用像 liveserver 这样的扩展。 IndexedDB 支持非常好,但我们仍然想检查浏览器是否支持 API 的实现,以便你可以添加以下函数来检查。...现在我们已经有了数据库设置,可以对我们希望发生的任何其他事件遵循相同的模式。...renderTodos() // 更新 dom }) 现在你可以添加 todos,因为你使用的是 IndexedDB,无论你是在线还是离线,它都可以工作。...幸运的是,你可以使用 onblocked 事件触发警报,通知用户他们需要这样做。 你可以在 MDN 文档中找到更多 IndexedDB 的限制。

1.9K20
您找到你想要的搜索结果了吗?
是的
没有找到

【Web技术】630- 前端存储除了 localStorage 还有啥

Schema:通过 jsonschema 定义 Schemas,它们用来描述数据格式。...Web SQL Database 规范中定义的三个核心方法: openDatabase:这个方法使用现有数据库或新建数据库创建数据库对象; transaction:这个方法允许我们根据情况控制事务的提交或回滚...该 API 使用索引来实现对该数据的高性能搜索。虽然 Web Storage 对于存储较少量的数据很有用,但对于存储更大量的结构化数据来说,这种方法不太好用。IndexedDB 提供了一个解决方案。...{ keyPath: "ssn" }); // 建立一个索引来通过姓名搜索客户。...名字可能会重复,所以我们不能使用 unique 索引 objectStore.createIndex("name", "name", { unique: false }); // 使用邮箱建立索引

2.2K30

除了缓存,浏览器还有哪些存储数据的方式?

2、Window.sessionStorage 为每个网站建立一个独立存储区存储数据,在页面会话结束时清除数据。...IndexedDB 用于在客户端存储大量的结构化数据(也包括文件/二进制大型对象(blobs)),使用索引实现高性能搜索。...Dexie.js IndexedDB 的扩展库,简单易用。 ZangoDB 类似 MongoDBIndexedDB 接口,支持 MongoDB 的大多数熟悉的过滤、投影、排序、更新和聚合功能。...idb IndexedDB 扩展库,大小只有 1.05k,但让 IndexedDB 变的非常容易使用。...lovefield Lovefield 是一个用于 Web App 的关系型数据库,使用 JavaScript 编写,可以在不同的浏览器环境中运行,提供了类似 SQL 的 API,速度快、安全且易用。

1.5K30

前端存储除了 localStorage 还有啥

Schema:通过 jsonschema 定义 Schemas,它们用来描述数据格式。...Web SQL Database 规范中定义的三个核心方法: openDatabase:这个方法使用现有数据库或新建数据库创建数据库对象; transaction:这个方法允许我们根据情况控制事务的提交或回滚...该 API 使用索引来实现对该数据的高性能搜索。虽然 Web Storage 对于存储较少量的数据很有用,但对于存储更大量的结构化数据来说,这种方法不太好用。IndexedDB 提供了一个解决方案。...{ keyPath: "ssn" }); // 建立一个索引来通过姓名搜索客户。...名字可能会重复,所以我们不能使用 unique 索引 objectStore.createIndex("name", "name", { unique: false }); // 使用邮箱建立索引

2.3K30

JavaScript是如何工作的:存储引擎+如何选择合适的存储API

数据模型 数据存储模型确定数据在内部的组织方式,这会影响 Web 应用程序的整个设计,合理的数据模式会让 Web 应用程序在完成它应有的任务下还能让运行速度更加高效。...所以,来看看可选择的数据模型: 结构化: 存储在具有预定义字段的表中的数据(这是典型的基于 SQL 的数据库管理系统)适行灵活的动态查询。...WebSQL 数据库是一个关系数据库访问系统,而IndexedDB 是一个索引表系统。 不要一开始就使用 IndexedDB,这依赖于你对其他类型数据库的假设。...你可以对对象的某个属性创建索引(index)以实现快速查询和列举排序。key可以是二进制对象。 IndexedDB 是事务模式的数据库 —  任何操作都发生在事务(transaction)中。...indexedDB使用结构化查询语言(SQL) — 它通过索引(index)所产生的指针(cursor)完成查询操作,从而使你可以迭代遍历到结果集合。

1.6K10

IndexedDB 打造靠谱 Web 离线数据库

这里,我们可以使用游标,index 做。例如,通过 index 快速索引 key 值,参考 [代码1]。...在 indexedDB 中,我们一共可以通过三种方式索引数据: 固定的 key 值 索引外键(index) 游标(cursor) 固定 key 索引 IDBObjectStore 提供给了我们直接通过...只含有 readonly 模式的 transaction 可以并发进行执行 含有 write 模式的 transaction 必须按照队列 执行 这就意味着,如果你使用了 readwrite 模式的话...key可以使二进制对象 IndexedDB 是事务模式的数据库....indexedDB使用结构化查询语言(SQL)。它通过索引(index)所产生的指针(cursor)完成查询操作,从而使你可以迭代遍历到结果集合。

2.9K30

HTML5学习-day02【悟空教程】

认为,按照“渐进增强”的思路,这样就是最好的了,也就是:只使用较少的代码优化高级浏览器的使用体验。 如果真的想要在各类浏览器里都表现一致,拥有这样的记录功能呢?...LocalStorage和Cookies?...而IndexedDB很适合存储大量数据,它的API是异步调用的。IndexedDB使用索引存储数据,各种数据库操作放在事务中执行。IndexedDB甚至还支持简单的数据类型。...异步 在IndexedDB大部分操作并不是我们常用的调用方法,返回结果的模式,而是请求—响应的模式,所谓异步API是指并不是这条指令执行完毕,我们就可以使用request.result获取indexedDB...indexedDB怎么玩 IndexedDB 鼓励使用的基本模式如下所示: 打开数据库并且开始一个事务。 创建一个 object store。 构建一个请求执行一些数据库操作,像增加或提取数据等。

1.7K30

vue3 专用 indexedDB 封装库,基于Promise告别回调地狱 准备创建数据库的信息直接使用做个“外壳”套个娃

简介 IndexedDB 是一种底层 API,用于在客户端存储大量的结构化数据(也包括文件/二进制大型对象(blobs))。该 API 可以使用索引实现对数据的高性能搜索。...使用也是很简单的,网上可以找到很多教程,官网也推荐了几个封装类库。 只是比较懒,得看别人的类库(好吧,看不懂),而是想按照自己的想法封装一个自己用着习惯的类库。..._add(tranRequest) } }) } 首先使用 Promise 封装默认的回调模式,然后可以传递进来一个事务进来,这样可以实现打开事务连续添加的功能。...使用方式 看了上面的代码可能会感觉很晕,这么复杂?不是说很简单? 对呀,把复杂封装进去了,剩下的就是简单的调用了。那么如何使用呢?...所以干脆放在静态对象里面好了,任何地方都可以访问到。 并不需要使用 use 挂载到 App 上面。 索引和查询 由于篇幅有限,这里就先不介绍了,如果大家感兴趣的话,可以在写一篇补充一下。

1.7K40

LocalStorage不够用?那就该试试这个

第一次使用IndexDB时,也是直接使用IndexedDB API。嗯~嗯~非常麻烦,需要写很多代码,突然感觉还是 LocalStorage 来得简单直接。 怎么解决呢?...或者使用 async/await 语法更清晰地处理异步操作。此外,错误可以在catch中统一处理,且有丰富的错误类型返回。对于我们开发者来说,更加直观友好,编写和维护代码更加优雅方便。...简化数据查询 Dexie.js支持复杂的查询操作,包括过滤、排序、范围查询等,完全不需要编写那些的低级 IndexedDB 代码。还有更丰富的索引定义,并且支持多值索引和复合索引。... 或者可以使用 npm 或 yarn 进行安装。...我们不仅可以定义数据模式,包括表格和索引,而且随着 web 项目的发展迭代,还可以方便地进行数据库版本升级。 有了前边的示例,想必大家能明白 Dexie.js 的适用场景了。

24120

面试之MongoDB「建议收藏」

MongoDB 没有使用传统的锁或者复杂的带回滚的事务,因为它设计的宗旨是轻量,快速以及可预计的高性能。可以把它类比成 MySQL MylSAM 的自动提交模式。...为什么的数据文件如此庞大? MongoDB 会积极的预分配预留空间防止文件系统碎片。 启用备份故障恢复需要多久?...如果一个分片(shard)响应很慢,MongoDB 则会等待它的响应。 可以把 moveChunk 目录里的旧文件删除?...如果使用复制技术(replication),可以一部分使用日志(journaling)而其他部分则不使用? 可以。 当更新一个正在被迁移的块(Chunk)上的文档时会发生什么?...MongoDB 在 A:{B,C}上建立索引,查询 A:{B,C}和 A:{C,B}都会使用索引? 不会,只会在 A:{B,C}上使用索引

1.2K10

IndexedDB 教程

其实对于在浏览器里存储数据,可以使用 cookies 或 LocalStorage,但它们都是比较简单的技术,而 IndexedDB 提供了类似数据库风格的数据存储和使用方式。...IndexedDB 很适合存储大量数据,它的 API 是异步调用的。IndexedDB 使用索引存储数据,各种数据库操作放在事务中执行。IndexedDB 甚至还支持简单的数据类型。...我们可以使用每条记录中的某个指定字段作为键值(keyPath),也可以使用自动生成的递增数字作为键值(keyGenerator),也可以不指定。...异步 在 IndexedDB 大部分操作并不是我们常用的调用方法,返回结果的模式,而是请求—响应的模式,所谓异步 API 是指并不是这条指令执行完毕,我们就可以使用 request.result 获取...,unique字段是否唯一, 指定索引可以加快搜索效率。

1.5K20

萌新必看——10种客户端存储哪家强,一文读尽!

JavaScript变量 DOM节点(DOM node)存储 Web存储(localStorage和sessionStorage) IndexedDB/索引数据- Cache API...Web存储提供了两个类似的api定义名称/值对: window.localStorage:存储持久数据 •- window.sessionStorage:在浏览器选项内容保持打开状态时仅保留会话数据...存储大量结构化信息不太实用,但是我们可以通过在页面卸载时写入数据避免性能问题。 4.IndexedDB/索引数据库 ? IndexedDB提供了一个类似NoSQL的低级API存储大量数据。...下面内容连接到myDB数据库并初始化todo对象存储(类似于SQL表或MongoDB集合)。然后定义一个名为id的自动递增键: ? 数据库连接就绪后,可以在事务中添加新数据项: ?...优势 具有最大空间的灵活数据存储 强大的事务、索引和搜索选项 良好的浏览器支持 缺点 回调复杂,API基于事件 IndexedDB可以存储大量数据,但需要使用诸如idb、Dexie.js或JsStore

2.8K10

基础| 实现网页瞬开,indexedDB的这几个基本操作你必须懂

API两种:多数情况下使用异步API; 同步API必须同 WebWorkers 一起使用, 目前没有浏览器支持同步API 4.indexedDB 是事务模式的数据库, 使用 key-value 键值对储存数据...它通过索引(index)所产生的指针(cursor)完成查询操作 正文 一、使用indexedDB的基本模式 1.打开数据库并且开始一个事务。 2.创建一个 objecStore。...对数据库的操作(增删查改等)都需要通过事务完成,事务具有三种模式: •readonly 只读(可以并发进行,优先使用) •readwrite 读写 •versionchange 版本变更 向数据库中增加数据...使用唯一性索引,我们可以得到唯一的一条数据(或者undefined),那么使用非唯一性索引呢?...在indexedDB2规范中,在对象存储空间对象上纳入了一个getAll()方法,可以获取所有对象: 在索引使用游标 接着本文上述使用索引的例子,在索引title上使用openCursor()方法时

2.4K10

95道MongoDB面试题(含答案),1万字详细解析!

MongoDB没有使用传统的锁或者复杂的带回滚的事务,因为它设计的宗旨是轻量,快速以及可预计的高性能。可以把它类比成MySQLMylSAM的自动提交模式。...如果一个分片(shard)响应很慢,MongoDB则会等待它的响应。 26、可以把moveChunk目录里的旧文件删除?...29、如果使用复制技术(replication),可以一部分使用日志(journaling)而其他部分则不使用? 可以。 30、当更新一个正在被迁移的块(Chunk)上的文档时会发生什么?...31、MongoDB在A:{B,C}上建立索引,查询A:{B,C}和A:{C,B}都会使用索引? 不会,只会在A:{B,C}上使用索引。...40、MongoDB在A:{B,C}上建立索引,查询A:{B,C}和A:{C,B}都会使用索引? 不会,只会在A:{B,C}上使用索引

8K30

对不起 localStorage,现在爱上 localForage了!

当我们的存储量比较大的时候,我们一定会想到我们的 indexedDB,让我们在浏览器中也可以使用数据库这种形式玩转本地化存储,然而 indexedDB使用是比较繁琐而复杂的,有一定的学习成本,但...存取方便 IndexedDB 是一个基于 JavaScript 的面向对象数据库。IndexedDB 允许你存储和检索用键索引的对象;可以存储结构化克隆算法支持的任何对象。...那么 IndexedDB 存储量过多的话会导致页面变卡? 不会有太大影响,因为 IndexedDB 的读取和存储都是异步的,不会阻塞浏览器进程。...But.....关于 indexedDB 的介绍就到此为止,详细使用在此不再赘述,因为本篇文章重点想介绍的是 localForage!...什么是 localForage localForage 是基于 indexedDB 封装的库,通过它我们可以简化 IndexedDB使用

50120

用NW.js构建跨平台桌面应用(4)-数据持久化

Node.js直接使用NeDB、LowDB等第三方数据库方案,也可以使用HTML5及其相关标准中提供的WebSQL、WebStorage、IndexedDB等方案,甚至直接将简单的数据保存到本地文件中...5MB的存储限制 同步调用,有可能阻塞主渲染进程 直接读写磁盘,可能影响性能 没有高级的索引和查询等 只能用字符串存取数据,复杂数据和图片应分别用JSON和base64转码后存储 可以在 DevTools..., ["是一条日志"], function sqlStatementCallback(transaction, resultSet) {}, function...IndexedDB 存储 key-value 数据的事务型 NoSQL 非关系型数据库系统 可以存储复杂的javascript对象,并用一个或多个索引查询 基本没有容量限制 所有操作都是异步的 4.1...,实现IDBObjectStore接口 事务(transaction): 所有ObjectStore的读写操作都借由事务完成 可以在 DevTools->Application->Storage->IndexedDB

2K20

程序员的50大MongoDB面试问题及答案

30.MongoDB支持存储过程?如果支持的话,怎么用? 31.如何理解MongoDB中的GridFS机制,MongoDB为何使用GridFS存储文件? 32.如何执行事务/加锁?...MongoDB没有使用传统的锁或者复杂的带回滚的事务,因为它设计的宗旨是轻量,快速以及可预计的高性能。可以把它类比成MySQL MylSAM的自动提交模式。...现在,每个默认块的大小是 64Mb,所以你需要至少 64 Mb 空间才可以实施一个迁移。 37.可以把moveChunk目录里的旧文件删除?...由于使用MongoDB设计数据模型要比使用Redis容易得多(Redis更底层),因此可以MongoDB的主要持久性数据灵活性和Redis提供的额外功能(低延迟)中受益。...使用了 mongo-azure库 帮助创建具有两个工作角色的MongoDB副本集。 (如果您还有其他资源,那么很乐意阅读。

26820
领券