Absurd-SQL 使用教程

Absurd-SQL 使用教程

absurd-sqlsqlite3 in ur indexeddb (hopefully a better backend soon)项目地址:https://gitcode.com/gh_mirrors/ab/absurd-sql

项目介绍

Absurd-SQL 是一个基于 WebAssembly 的 SQLite 实现,它允许在浏览器中创建和查询关系数据库。Absurd-SQL 使用 IndexedDB 作为后端存储,将数据以块存储形式存储在浏览器中,从而提高了 Web 应用程序的性能并减轻了服务器的负担。

项目快速启动

安装

首先,使用 yarn 安装 Absurd-SQL 和 sql.js:

yarn add @jlongster/sql.js absurd-sql

使用

Absurd-SQL 必须在 worker 中运行,以避免阻塞主线程。以下是主线程和 worker 的示例代码:

主线程代码
import { initBackend } from 'absurd-sql/dist/indexeddb-main-thread';

function init() {
  let worker = new Worker(new URL('./index-worker.js', import.meta.url));
  initBackend(worker);
}

init();
Worker 代码
import initSqlJs from '@jlongster/sql.js';
import { SQLiteFS } from 'absurd-sql';
import IndexedDBBackend from 'absurd-sql/dist/indexeddb-backend';

async function run() {
  let SQL = await initSqlJs({
    locateFile: file => file
  });
  let sqlFS = new SQLiteFS(SQL.FS, new IndexedDBBackend());
  SQL.register_for_idb(sqlFS);
  SQL.FS.mkdir('/sql');
  SQL.FS.mount(sqlFS, [], '/sql');

  const path = '/sql/db.sqlite';
  if (typeof SharedArrayBuffer === 'undefined') {
    let stream = SQL.FS.open(path, 'a+');
    await stream.node.contents.readIfFallback();
    SQL.FS.close(stream);
  }

  let db = new SQL.Database(path, { filename: true });
  db.exec(`PRAGMA journal_mode=MEMORY`);

  // 你的代码
}

run();

应用案例和最佳实践

应用案例

Absurd-SQL 可以用于构建离线优先的 Web 应用程序,例如:

  • 离线笔记应用:用户可以在没有网络连接的情况下创建和编辑笔记,数据存储在本地。
  • 离线地图应用:用户可以在没有网络连接的情况下查看地图和标记位置。

最佳实践

  • 使用 Worker:始终在 worker 中运行 Absurd-SQL,以避免阻塞主线程。
  • 性能优化:使用 PRAGMA journal_mode=MEMORY 等优化指令来提高性能。
  • 错误处理:在多标签环境下,确保正确处理数据库写入错误。

典型生态项目

Absurd-SQL 可以与其他 Web 技术结合使用,例如:

  • React:使用 React 构建前端界面,结合 Absurd-SQL 进行本地数据存储。
  • Express:在后端使用 Express 提供 API,前端通过 Absurd-SQL 进行本地数据存储和同步。
  • Webpack:使用 Webpack 进行模块打包和优化。

通过这些生态项目的结合,可以构建出功能丰富且性能优越的 Web 应用程序。

absurd-sqlsqlite3 in ur indexeddb (hopefully a better backend soon)项目地址:https://gitcode.com/gh_mirrors/ab/absurd-sql

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

经梦鸽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值