SimpleIDB
indexedDB封装库,支持通过链式调用简单的使用indexedDB的增删改查。
今日安裝
0
總安裝量
13
創建日期
6 天前
更新日期
3 天前
用户評分
暫無評分
// @require https://scriptcat.org/lib/2436/1.1.3/SimpleIDB.js
論壇帖子
v1.1.3@require库

痛点分析

  • GM缓存方法只能存放文本数据
  • 同域名跨脚本难以共享数据
  • 多线程大量数据使用GM函数存取可能造成卡顿

indexedDB介绍

以下内容来自AI
IndexedDB 是一种在浏览器中运行的非关系型数据库,它允许网页应用存储大量结构化数据。这种数据库由键值对组成,可以进行高效的查找和索引。IndexedDB 提供了一种异步API,允许网页应用在不阻塞主线程的情况下进行数据库操作,这对于提升网页应用的性能和用户体验非常重要。
以下是IndexedDB的一些关键特性:

  1. 异步API:IndexedDB 的操作不会阻塞浏览器的主线程,这意味着即使在执行数据库操作时,用户界面也能保持响应。
  2. 大数据存储:IndexedDB 可以存储比传统Web存储(如LocalStorage)更多的数据,通常可以达到数GB。
  3. 事务管理:IndexedDB 支持事务,这意味着你可以将一系列操作作为一个整体进行提交或回滚,这对于保持数据的一致性非常重要。
  4. 键值对存储:IndexedDB 以对象存储的形式存储数据,每个对象存储为一个键值对,其中键用于索引和检索数据。
  5. 索引:IndexedDB 允许创建索引,这使得根据对象的属性快速检索数据成为可能。
  6. 支持二进制数据:IndexedDB 可以存储二进制数据,这对于存储图像、视频或其他大型文件非常有用。
  7. 浏览器支持:大多数现代浏览器都支持IndexedDB,包括Chrome、Firefox、Safari和Edge。
  8. 离线应用:IndexedDB 使得开发离线应用成为可能,因为数据可以存储在用户的设备上,即使没有网络连接也能访问。
    IndexedDB 是构建复杂、数据密集型Web应用的重要工具,它提供了一种在客户端存储和管理大量数据的有效方式。

脚本目前虽然支持链式调用但尚未支持在链式调用的同时统一事务。因为这个库是用作某个其他项目的工具库,我看大家都没做我就干脆做一个了反正我要用。但我也得以我自己的项目为重。有时间我会继续完善功能。且开发初期本库可能更新的较为频繁。

使用说明

主类名SimpleDB,实例化一个对象代表一个DB连接。建议保留该对象,不要创建太多连接。
使用get(key),set(key,value),remove(key)进行增删改查。clear()清空全部数据,useTable('tableName')指定需要使用的数据表(类比Redis的数据库,多套一层,因为它也有自己的“dbName”)
何为链式调用?即如下用法:

return new SimpleDB()
    .set('k',1)
    .get('k')
    .execute()

此时会返回数组:[1]。也就是说您执行了几次有返回值的执行函数,就会按顺序添加返回值元素。如果本次执行没有返回值,则会返回[]。
务必执行execute函数,否则相当于构建好命令没有发送

补个方法列表:

  • useTable(storeName:可理解为表名):未指定表名用默认表名,每次execute前只能声明一次,否则后来的覆盖
  • set(k,v):没啥好说的,和GM_setValue一致
  • getKeys():取当前表全部key
  • getNextKey():使用游标取得第一个key,目前版本只能取第一个key,后面我会让他成为名副其实的“下一个key”
  • get(key):取得key对应的value
  • remove(key):删除key对应的值,之后get得到undefined
  • clear():清空当前表所有值
  • execute():再次强调,最后必须提供这个,否则返回的是simpleDB对象自身。错误示范:let value = get('key');,正确示范:let value = get('key').execute()[0]

理论上IDB是进去啥类型出来啥类型,不需要转换,这也是这玩意最大的优点。
IDB不可跨域,子域名也跨不了。
你们用的时候出错,很正常,我自己在写这文档之前也没实际用过这玩意。出错及时反馈就行,我自己测好估计还得改几版。

腳本評分
empty image
還沒有人來給腳本打分,快來成為第一個打分的人吧