2021-04-04 12:17:43
JavaScript 访问数据库的方法主要分为三类:原生 API、第三方库和后端服务。以下是具体实现方式及步骤:
一、原生 JavaScript API1. IndexedDB(推荐)特点:浏览器内置的 NoSQL 数据库,支持键值对存储和事务操作。步骤:
注意:仅部分旧浏览器支持,不建议新项目使用。
const db = openDatabase('myDB', '1.0', 'Test DB', 2 * 1024 * 1024);db.transaction(tx => { tx.executeSql('CREATE TABLE IF NOT EXISTS users (id, name)'); tx.executeSql('INSERT INTO users VALUES (1, "Alice")');});二、第三方库1. SQL.js特点:在浏览器中运行 SQLite,适合需要 SQL 语法的场景。步骤:
特点:简化 IndexedDB 操作的封装库。步骤:
const db = new Dexie('MyDatabase');db.version(1).stores({ friends: '++id, name, age' });// 添加数据await db.friends.add({ name: 'Alice', age: 25 });// 查询数据const friends = await db.friends.where('age').above(20).toArray();三、后端服务1. Node.js + 数据库驱动适用场景:服务器端访问 MySQL、MongoDB 等。示例(MySQL):
const mysql = require('mysql');const connection = mysql.createConnection({ host: 'localhost', user: 'root', database: 'test' });connection.connect();connection.query('SELECT * FROM users', (err, results) => { console.log(results);});2. PHP + JavaScript(AJAX)流程:
IndexedDB 和 Web SQL 仅限客户端,数据存储在用户浏览器中。
敏感操作需通过后端服务处理。
避免在前端直接暴露数据库凭证。
使用参数化查询防止 SQL 注入(如 Node.js 的 mysql2/promise)。
大数据量操作建议分页或使用 Web Worker 避免阻塞 UI。
根据项目需求选择合适方案,平衡功能、性能与安全性。