Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
Y
yifu-study-front-share
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
CI / CD
CI / CD
Pipelines
Schedules
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
yifu-study
front
yifu-study-front-share
Commits
58886c86
Commit
58886c86
authored
Dec 12, 2022
by
zhangshun
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
分享indexdb提交
parent
b0e2c3af
Pipeline
#17336
canceled with stage
Changes
2
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
129 additions
and
1 deletion
+129
-1
JavaScript中的IndexedDB使用(一).md
source/_posts/JavaScript中的IndexedDB使用(一).md
+128
-0
JavaScript中的正则表达式(二).md
source/_posts/JavaScript中的正则表达式(二).md
+1
-1
No files found.
source/_posts/JavaScript中的IndexedDB使用(一).md
0 → 100644
View file @
58886c86
---
title
:
JavaScript中的IndexedDB使用
date
:
2022/8/30 17:20:00
author
:
张顺
---
## 什么是IndexedDB?
IndexedDB是一种在浏览器端存储数据的方式,它丰富了客户端的查询方式,并且因为是本地存储,可以有效的减少网络数据对页面的影响。
## 有什么特点?
-
键值对储存:indexDB采用对象仓库存放数据,所有类型的数据都可以存入。
-
异步:indexDB操作不会锁死浏览器
-
支持事务:操作步骤中一步失败,整个事务取消,不存在只改写一部分数据的情况
-
同源限制:不能访问跨域数据库,只能访问自身域名下的数据库。
-
储存空间大:一般来说不少于250MB,没上限
-
支持二进制储存:可以存储字符串,而且可以存储二进制数据。
### IndexDB中的对象
-
数据库:IDBDatabase对象
-
对象仓库:IDBObjectStore对象
-
索引:IDBIndex
-
事务:IDBTransaction对象
-
操作请求:IDBRequest对象
-
指针:IDBCursor对象
-
键集合:IDBKeyRange对象
### 如何使用
```
JS
1. //打开一个数据库
var db ;
var reqDB = window.indexedDB.open("dbName", 'version');
2. //新建数据库
reqDB.onsuccess = function (event) { // 监听数据库创建成功事件
let db = event.target.result // 数据库对象
console.log('数据库打开成功')
}
reqDB.onerror = function (error) {
console.log('数据库打开报错')
}
reqDB.onupgradeneeded = function (event) {
// 数据库创建或升级的时候会触发
db = event.target.result
let storeName = '表名' // 表名
if (!db.objectStoreNames.contains(storeName)) { // 判断表是否存在
let objectStore = db.createObjectStore(storeName, { keyPath: '主键',autoIncrement: true }) //autoIncrement z主键是否自增
}
}
//dbName:数据库名字,数据库不存在就新建数据库,新建数据库默认版本为1;
//version:表示数据库的版本,整数,如果省略,默认为当前版本。
// indexDB.open()方法返回一个IDBRequest对象。这个对象通过error,success,upgradeneeded处理打开数据库的操作结果。
// db.createObjectStore可以创建一张表,param1 表名,param2 配置对象,keyPath为主键,autoIncrement是自动生成一个自增主键,一般keyPath和autoIncrement只需要一个,两个都存在的话,自动生成一个自增主键,并且keyPath设置的字段必须要存在
// upgradeneedend数据库升级
// 如果指定的版本号大于数据库实际版本号,就会发生数据库升级事件
3,//建索引
//建索引为了进行搜索
reqDB.onupgradeneeded = function (event) {
// 数据库创建或升级的时候会触发
db = event.target.result
let storeName = '表名' // 表名
if (!db.objectStoreNames.contains(storeName)) { // 判断表是否存在
let objectStore = db.createObjectStore(storeName, { keyPath: '主键',autoIncrement: true })
objectStore.createIndex('name', 'name', { unique: false,multiEntry:true }) // 创建索引 可以让你搜索任意字段
}
}
//unique 唯一
//multiEntry 对于有多个值的主键数组,每个值将在索引里面新建一个条目,否则主键数组对应一个条目
4,//添加数据
//需要通过事务对象IDBTransaction 来获取到对象仓库(表),然后通过对象仓库的add()方法向表中添加数据
// 2. 创建事务对象
const t = reqDB.transaction(['表名'], 'readwrite') // readwrite 读写权限模式
// 3. 拿到对象仓库
const objectStore = t.objectStore('表名')
// 4. 添加数据
const req = objectStore.add({xxx: 123456, yyy: '7890'}) // 添加的数据
// 5. 操作成功
req.success = function (e) {}
// 6. 操作失败
req.success = function (e) {}
// 注:1234 可使用点操作符连写
const req = reqDB.transaction(['表名'], 'readwrite')
.objectStore('表名')
.add({xxx: 123456, yyy: '7890'})
5,//修改数据
//同添加流步骤一样,使用对象仓库的put方法,修改表中数据,更新id为1的数据
objectStore.put({id: 1, xxx: 123456, yyy: '7890'})
5,//删除数据
//使用对象仓库的delete方法,删除表中数据,根据id删除
objectStore.delete(1)
6,//获取数据
//使用对象仓库的get方法,获取对应主键的数据,获取id为1的数据
objectStore.get(1)
```
source/_posts/JavaScript中的正则表达式(二).md
View file @
58886c86
...
...
@@ -16,7 +16,7 @@ tags:
方括号查询范围内符合的内容,在方括号中可以包含多个字符,表示匹配其中任意一个字符。如果多个字符的编码顺序是连续的,可以仅指定开头和结尾字符,省略中间字符,仅使用连字符~表示。如果在方括号内添加脱字符^前缀,还可以表示范围之外的字符。例如: (注意:中括号内不能有空格 ,否则会误解为还要匹配空格)
| 正则表达式模式 | 说明 |
| ---- | ---- |
| ---- | ---- |
----|
|
`(x|y)`
| 查找任何以
`|`
分隔的选项。 |
|
[
abc
]
| 查找方括号内任意一个字符。 |
|
[
^abc
]
| 查找不在方括号内的字符。|
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment