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

前端存储除了 localStorage 还有啥

存到 ImmortalDB 数据被冗余地存储 Cookies,IndexedDB 和 localStorage 中,并且如果其中任何数据被删除或损坏,它们将不断进行自我修复。...https://github.com/pouchdb/pouchdb ❞ PouchDB 是一个浏览器内数据库,允许应用程序本地保存数据,以便用户即使离线可以享受应用程序所有功能。...另外,数据客户端之间是同步,因此用户可以随时随地保持最新状态。 PouchDB 也 Node.js 中运行,可以用作与 「CouchDB」 兼容服务器直接接口。...https://github.com/dfahlander/Dexie.jsDexie.jsIndexedDB 包装库,它提供了一套经过精心设计 API,强大错误处理,较强可扩展性...为了便于开发者接入 Dexie.js Dexie.js 官网中提供了丰富示例: React + Dexie React + Redux + Dexie Dexie with Typescript

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

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

我第一次使用IndexDB,也是直接使用IndexedDB API。嗯~嗯~非常麻烦,需要写很多代码,突然感觉还是 LocalStorage 来得简单直接。 怎么解决呢?...网上有很多对IndexedDB原生接口进行包装其它库,但相较而言,Dexie.js具有以下明显优点: Promise 异步支持 和 IndexedDB 原生 API 一样,Dexie.js操作也是异步...但几乎所有Dexie.js接口都返回promise,也支持链式调用。或者使用 async/await 语法来更清晰地处理异步操作。此外,错误可以catch中统一处理,且有丰富错误类型返回。...轻量级 Dexie.js 是一个轻量级库,体积小巧,加载速度快,没有其他依赖。 Dexie.js 安装使用 安装 我们可以从 CDN 引入 js 文件。...官方地址: https://dexie.org/ 小结 Dexie.js 提供简洁 API,让我们可以轻松创建、打开、查询和管理 IndexedDB 数据库。

24020

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

断电即失效)保存为持久数据(比如写入数据库中长久保存); 由于NW.js特性,可供选择本地持久化方案非常丰富,既可以依赖于Node.js直接使用NeDB、LowDB等第三方数据库方案,也可以使用HTML5...及其相关标准中提供WebSQL、WebStorage、IndexedDB等方案,甚至直接将简单数据保存到本地文件中 [I]....直接存储数据到本地文件 正如之前文章提到过,NW.js提供了App.dataPath来访问系统应用数据目录, 可以利用其方便存储应用配置文件等 不同平台上具体指向: Win: $LOCALAPPDATA...back):错误发生撤销单条语句或整个事务操作 可以 DevTools->Application->Storage->Web SQL 标签页中查看已存储数据 3.2 常用方法 openDatabase...,实现IDBObjectStore接口 事务(transaction): 所有ObjectStore读写操作都借由事务完成 可以 DevTools->Application->Storage->IndexedDB

2K20

你可能需要indexedDB存储技术

阮一峰老师写IndexedDB 操作教程都是基于原生IndexedDB API进行操作,有时候是比较繁琐,那有没有一些成熟封装好js库供我们使用呢?...它使应用程序可以脱机时本地存储数据,然后应用程序重新联机时将其与CouchDB和兼容服务器同步,从而使用户数据无论在下次登录都保持同步。...(感觉像是在线办公软件临时离线场景,不适用于本节意义上纯离线场景) Github地址:https://github.com/pouchdb/pouchdb 3、Dexie.js(6.6K star)...Dexie.jsindexedDB封装库。...Github地址:https://github.com/dfahlander/Dexie.js 4、idb(3.7K star) 这是一个很小库(大约1.09k),主要反映了IndexedDB API

1.8K20

IndexDB实现一个本地数据库增删查改

可以支持存储任何类型数据 支持键检索,查询,新增,删除操作 客户端浏览器可以存储大数据量,适用于离线应用 所有接口都是基于事件 与lcoalStorage或者seesionStorage来说,IndexDB...并且,这里我没有直接用原生IndexDB,而是使用了官方文档推荐一个库dexie.js[2],因为官方原生API太难用了,而这个库是对原生IndexDB二次封装,使用起来更高效 index.html.../js/dexie.min.js"> 然后我们引入业务js ......,applcation/Storage/IndexDB中就会保存一条数据 当我们刷新,数据页面仍然会保留上一次数据 我们新增操作,然后刷新过程中主要发生了什么呢 其实IndexDB主要做了以下几件事情.../Using_IndexedDB [2]dexie.js: https://dexie.org/docs/API-Reference [3]code example: https://github.com

1.2K20

Electron实践笔记

进程之间可以通过 Electron 提供 IPC 接口通信。 二、开发环境搭建 我们了解到 Electron 分为两进程,main 和 renderer。...而且还需要自己维护 ID 生成。借鉴了 Desktop 代码后,重构了数据持久化部分,也采用了 Dexie[9],它是对浏览器标准数据库 indexedDB 一个封装。...从它 Readme 可以看到它主要解决了 indexedDB 三个问题: 不明确异常处理 查询很烂 代码复杂 import Dexie from 'dexie'; export interface...来实现我们自己数据库构造函数中声明数据库版本,表 schema 等等。...我们期望应用主进程启动更新是失败或者无更新是静默,不用打扰用户,所以 IPC 管道可以提供一个 silent 参数。

93810

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

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

1.5K30

Electron实践笔记

进程之间可以通过 Electron 提供 IPC 接口通信。 二、开发环境搭建 我们了解到 Electron 分为两进程,main 和 renderer。...而且还需要自己维护 ID 生成。借鉴了 Desktop 代码后,重构了数据持久化部分,也采用了 Dexie[9],它是对浏览器标准数据库 indexedDB 一个封装。...从它 Readme 可以看到它主要解决了 indexedDB 三个问题: 不明确异常处理 查询很烂 代码复杂 import Dexie from 'dexie'; export interface...来实现我们自己数据库构造函数中声明数据库版本,表 schema 等等。...我们期望应用主进程启动更新是失败或者无更新是静默,不用打扰用户,所以 IPC 管道可以提供一个 silent 参数。

1.1K30

Ionic 开发之 Ionic Storage 详解

该工具可以根据平台自动选择最佳存储引擎,而不用用户关系具体使用细节。模块内存储引擎默认选择顺序是 SQLite,IndexedDB,WebSQL 和 LocalStorage。...原生应用程序环境中运行时,存储方式会优先使用 SQLite 原因,是因为它最稳定和最广泛使用文件数据之一,并且避免了诸如 localStorage 和 IndexedDB 之类一些陷阱,比如在低磁盘空间情况下会自动清理数据...(reason)); }); } } 上面代码中,调用 db.setDriver() 方法,会调用内部 _getDriverOrder() 方法转换成相应驱动: private _getDriverOrder...}; Storage 成员方法 继续分析之前,我们先来大致浏览一下 Storage 中定义成员方法: driver() —— 返回 string 或 null,表示正在使用驱动名称; ready...实际开发过程中,在数据存储,我们可能还会涉及数据响应式、数据加密、数据压缩、数据迁移和备份,有上述需求同学,可以了解一下 rxdb 这个库。

3.8K10

TS与JSGetters和Setter究竟有什么用

本文中,我们讨论了getter 和 setter 现代 Web 开发中实用性。它们有用?什么时候使用它们是有意义?...防止贫血模式 你还记得贫血模式(译者注:一种反模式)是什么?尽早发现贫血模式方法之一是,假如你域实体每个属性都有getter和setter(即:set 对域特定语言没有意义操作)暴露的话。...你现在可以`set` 用户ID。 3 // 是否需要将用户 id 变更为其他标识符? 4 // 这样安全? 你应该这样做?... Vue.js 中更改检测 Vue.js 是一个较新前端框架,以其快速和响应式而闻名。...getter/setter 对用户是不可见,但是幕后,它们使 Vue 能够访问或修改属性执行依赖关系跟踪和更改通知。

2K40

【Vue原理解析】之响应式系统

引言--Vue2响应式系统是核心之一,它使得Vue.js能够实现数据驱动视图变化。...它通过递归遍历对象所有属性,并使用Proxy代理对象来实现对属性拦截。Vue2.x响应式系统Vue.js中,响应式系统主要分为两部分:数据劫持和发布订阅。...数据劫持:通过使用Object.defineProperty API来对数据对象属性进行劫持,属性get和set添加钩子函数,get记录依赖,set通知观察者更新视图。...Watcher(观察者)用于订阅一个或多个依赖关系,依赖发生变化时执行相应回调函数。Watcher是一个用于订阅和接收属性变化通知。...this.cb.call(this.vm, value, oldValue) } } }}Watcher构造函数中,首先将传入vm、expOrFn和cb保存到实例对应属性上。

23920

IndexedDB 打造靠谱 Web 离线数据库

---- 知乎和我平常工作中,常常会看到一个问题: 前端现在还火?...TL;DR 下文主要介绍了 indexedDB 基本概念,以及实际应用中实操代码。 indexedDB 基础概念。 indexedDB 里面会根据索引 index 来进行整体数据结构划分。... Dexie.js DB 数据库中,需要你保留每次 DB 创建方法,实际上是通过 添加 swtich case ,来完成每个版本更新: # Dexie.js 保留 DB 数据库 db.version... OS 中,创建一个 key 可以使用 key generator 和 key path。 key generator: 简单来说就是存储数据,主动生成一个 id++ 来区分每条记录。...optional IDBCursorDirection direction = "next"); }; 参考: idb 开源库,微型代码库treo 开源库dexie.js

2.9K30

「源码级回答」大厂高频Vue面试题(上)

其实默认Vue初始化数据,会给data中属性使用Object.defineProperty重新定义所有属性,当页面取到对应属性。...get中通过dep.depend()收集依赖。当数据改变,拦截属性更新操作,通过set中dep.notify()通知相关依赖进行更新。 Vue 中是如何检测数组变化?...指向了自己定义数组原型方法,这样当调用数组 api ,就可以通知依赖更新。如果数组中包含着引用类型,会对数组中引用类型再次进行观测。 这里用一张流程图来说明: ?...所以 defineComputed 函数作用就是定义 getter 和 setter ,并且最后调用 Object.defineProperty 给计算属性添加 getter/setter ,当我们访问计算属性就会触发这个...❝new Watcher传入第四个参数computedWatcherOptionslazy为true,对应就是watcher构造函数中dirty为true。

76721

监测与调试 Vue.js 响应式系统:计算属性树(Computed Tree)

计算属性响应式机制是如何运转? 通常,当从一个 Dep 实例获取到更新通知,响应机制将会触发对应 Watcher 函数。当我变更一个被组件渲染所依赖响应式数据,将触发重渲染。...唯一能证明它是 Vuex 中 getter 线索是:它函数体定义 vuex.min.js 中(译者注:[[FunctionLocation]])。...所以我们应该怎样获取 getter 名称呢?开发者工具中你通常可以访问 [[Scopes]],你可以 [[Scopes]] 中找到它名称,然而这并不是通过编程方式来获取。...现在,当我们查看 subs 数组中 Watcher ,我们可以通过获取 watcherName 来获取 Vuex getter 名称。...对象属性 Dep 实例 上面我提到调试响应式数据你是看不到对象属性 Dep 实例。

1.3K30

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

普通情况下,我们存储数据会一直保留,直到我们删除相关内容;或者是这些数据保存到浏览器会话结束,用户关闭之后。 但在实际情况中会更加复杂一些。...优势 易于使用 快捷 不需要序列化或反序列化 缺点 易失:刷新或者关闭标签会清除所有内容 第三方脚本可以检查或覆盖全局(窗口)值 如果你已经使用JS变量,可以考虑page...存储大量结构化信息不太实用,但是我们可以通过页面卸载写入数据来避免性能问题。 4.IndexedDB/索引数据库 ? IndexedDB提供了一个类似NoSQL低级API来存储大量数据。...可以进行索引存储,使用事务更新存储,并使用异步方法搜索存储。 IndexedDBapi很复杂,需要一些事件处理。以下函数传递名称、版本号和可选升级函数(版本号更改时调用)打开数据库连接: ?...优势 具有最大空间灵活数据存储 强大事务、索引和搜索选项 良好浏览器支持 缺点 回调复杂,API基于事件 IndexedDB可以存储大量数据,但需要使用诸如idb、Dexie.js或JsStore

2.8K10

监测与调试 Vue.js 响应式系统:计算属性树(Computed Tree)

计算属性响应式机制是如何运转? 通常,当从一个 Dep 实例获取到更新通知,响应机制将会触发对应 Watcher 函数。当我变更一个被组件渲染所依赖响应式数据,将触发重渲染。...currentUser 这个 Watcher 看起来长这样: 唯一能证明它是 Vuex 中 getter 线索是:它函数体定义 vuex.min.js 中(译者注:[[FunctionLocation...所以我们应该怎样获取 getter 名称呢?开发者工具中你通常可以访问 [[Scopes]],你可以 [[Scopes]] 中找到它名称,然而这并不是通过编程方式来获取。...现在,当我们查看 subs 数组中 Watcher ,我们可以通过获取 watcherName 来获取 Vuex getter 名称。...对象属性 Dep 实例 上面我提到调试响应式数据你是看不到对象属性 Dep 实例。

97120
领券