indexedDB 基本使用

2017/12/14 · 基础技术 ·
1 评论 ·
IndexedDB

初稿出处:
党黎明   


indexedDB简介:

indexedDB
是一种采用浏览器存款和储蓄大批量数额的方法.它创制的多寡能够被询问,并且能够离线使用.

 

indexedDB 有以下特点:

  1. indexedDBWebSQL 数据库的取代品
  2. indexedDB遵照同源协议(只可以访问同域中贮存的数量,而不可能访问别的域的)
  3. API包含异步API同步API三种:多数景色下利用异步API;
    同步API必须同
    less基本使用,基本使用。WebWorkers
    一起利用, 最近从不浏览器协理同步API
  4. indexedDB 是业务方式的数据库, 使用 key-value 键值对储存数据
  5. indexedDB 不选取结构化查询语言(SQL).
    它经过索引(index)所发生的指针(cursor)来形成查询操作

当今Android上的图样加载框架很成熟了,比较有名的就要属 Glide , Picasso
与 Volley
了。他们都以正值Github上开源的。因为第②遍使用的图形框架正是Glide,所以对其有说不清道不明的心怀,哈哈(其实就是无意去商讨其余的框架啦,终归Glide依旧很有力的),所以,决定对Glide的学习记录一下。

图片 1

① 、开发中可因此less.js动态生成css

1、简介
less是css的一种预处理语言,在less里能够定义变量,不难的+-*/运算,代码混合等等,能够增强咱们的支出功用。
可参考
http://www.bootcss.com/p/lesscss/
2、使用
下载less.js
http://lesscss.cn/\#download-options
页面引入less和less.js

<link rel="stylesheet/less" href="syle.less">
<script src=jquery.min.js"></script>
<script src="less.min.js"></script>

那样会在页面加载后动态生产css,正式环境中建议引入生成好的css文件。
叁 、语法完全辅助css语法

通过@定义变量,依然采用就近原则,局部变量有使用局部变量。

变量允许我们单独定义一系列通用的样式,然后在需要的时候去调用。所以在做全局样式调整的时候我们可能只需要修改几行代码就可以了。
混合可以将一个定义好的class A轻松的引入到另一个class B中,从而简单实现class B继承class A中的所有属性。我们还可以带参数地调用,就像使用函数一样。

// LESS

@color: #4D926F;

#header {
 color: @color;
}
h2 {
 color: @color;
}

/* 生成的 CSS */

#header {
 color: #4D926F;
}
h2 {
 color: #4D926F;
}

// LESS

.rounded-corners (@radius: 5px) {
 border-radius: @radius;
 -webkit-border-radius: @radius;
 -moz-border-radius: @radius;
}

#header {
 .rounded-corners;
}
#footer {
 .rounded-corners(10px);
}

/* 生成的 CSS */

#header {
 border-radius: 5px;
 -webkit-border-radius: 5px;
 -moz-border-radius: 5px;
}
#footer {
 border-radius: 10px;
 -webkit-border-radius: 10px;
 -moz-border-radius: 10px;
}

我们可以在一个选择器中嵌套另一个选择器来实现继承,这样很大程度减少了代码量,并且代码看起来更加的清晰。

// LESS

#header {
 h1 {
 font-size: 26px;
 font-weight: bold;
 }
 p { font-size: 12px;
 a { text-decoration: none;
 &:hover { border-width: 1px }
 }
 }
}

/* 生成的 CSS */

#header h1 {
 font-size: 26px;
 font-weight: bold;
}
#header p {
 font-size: 12px;
}
#header p a {
 text-decoration: none;
}
#header p a:hover {
 border-width: 1px;
}

运算提供了加,减,乘,除操作;我们可以做属性值和颜色的运算,这样就可以实现属性值之间的复杂关系。LESS中的函数一一映射了JavaScript代码,如果你愿意的话可以操作属性值。

// LESS

@the-border: 1px;
@base-color: #111;
@red: #842210;

#header {
 color: @base-color * 3;
 border-left: @the-border;
 border-right: @the-border * 2;
}
#footer { 
 color: @base-color + #003300;
 border-color: desaturate(@red, 10%);
}

/* 生成的 CSS */

#header {
 color: #333;
 border-left: 1px;
 border-right: 2px;
}
#footer { 
 color: #114411;
 border-color: #7d2717;
}

叁 、less的监视格局

蹲点方式是客户端的1个功效,这些效应允许你当您转移样式的时候,客户端将活动刷新。

要动用它,只要在U瑞鹰L前边加上’#!watch’,然后刷新页面就能够了。其它,你也足以经过在顶峰运转less.watch()来运转监视方式。

这个是less的中坚选取方式,越来越多职能和高等用法,能够查看api文书档案。

壹 、使用indexedDB的基本情势

  1. 开辟数据库并且初阶三个事务。
  2. 创设三个 objecStore
  3. 创设二个呼吁来执行一些数据库操作,像扩充或提取数额等。
  4. 经过监听正确类型的 DOM 事件以等待操作完结。
  5. 在操作结果上进展局地操作(能够在 request 对象中找到)

本文是对准郭霖大神的原创文章–研究Glide,学习之后的笔记。

因为源码对小编的话看起来照旧比较为难的,所以就只可以站在巨人的肩膀上来学习。那样能为温馨省点力,也能较快的驾驭Glide中提到源码的文化。

Glide的GitHub地址为:https://github.com/bumptech/glide.

图片 2

② 、创立、打开数据库

indexedDB 存在于全局对象window上, 它最关键的两个方法便是open主意,
该方法接收多少个参数:

  • dbName // 数据库名称 [string]
  • version // 数据库版本 [整型number]

var DB_NAME = ‘indexedDB-test’, VERSION = 1, db; var request =
indexedDB.open(DB_NAME, VELacrosseSION); request.onsuccess = function(event) {
db = event.target.result; // console.log(event.target === request); //
true db.onsuccess = function(event) { console.log(‘数据库操作成功!’); };
db.onerror = function(event) { console.error(‘数据库操作发生错误!’,
event.target.errorCode); }; console.log(‘打开数据库成功!’); };
request.onerror = function(event) { console.error(‘创造数据库出错’);
console.error(‘error code:’, event.target.errorCode); };
request.onupgradeneeded = function(event) { // 更新指标存款和储蓄空间和目录
…. };

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var DB_NAME = ‘indexedDB-test’, VERSION = 1, db;
var request = indexedDB.open(DB_NAME, VERSION);
request.onsuccess = function(event) {
    db = event.target.result;
    // console.log(event.target === request); // true
    db.onsuccess = function(event) {
        console.log(‘数据库操作成功!’);
    };
    db.onerror = function(event) {
        console.error(‘数据库操作发生错误!’, event.target.errorCode);
    };
    console.log(‘打开数据库成功!’);
};
request.onerror = function(event) {
    console.error(‘创建数据库出错’);
    console.error(‘error code:’, event.target.errorCode);
};
request.onupgradeneeded = function(event) {
   // 更新对象存储空间和索引 ….
};

万一本域下不设盛名为DB_NAME的数据库,则上述代码会创设八个名为DB_NAME、版本号为VERSION的数据库;
触发的事件依次为: upgradeneededsuccess.

若是已存在名为DB_NAME的数据库, 则上述代码会打开该数据库;
只接触success/error事件,不会接触upgradeneeded事件.
db是对该数据库的引用.

Glide是一款由Bump
Technilogies开发的图形加载框架,它的运用方式最好便捷,差不多令人切齿。当然,大家要使用它,首先要添加正视:

图片 3

三 、创设对象存款和储蓄空间和目录

在关系型数据库(如mysql)中,二个数据库中会有多张表,每张表有各自的主键、索引等;

key-value型数据库(如indexedDB)中,
一个数据库会有多个对象存款和储蓄空间,种种存储空间有和好的主键、索引等;

创造对象存储空间的操作一般位于创制数据库成功回调里:

request.onupgradeneeded = function(event) { // 更新目的存款和储蓄空间和目录
…. var database = event.target.result; var objectStore =
database.createObjectStore(“movies”, { keyPath: “id” });
objectStore.createIndex(‘alt’, ‘alt’, { unique: true });
objectStore.createIndex(‘title’, ‘title’, { unique: false }); };

1
2
3
4
5
6
request.onupgradeneeded = function(event) { // 更新对象存储空间和索引 ….
    var database = event.target.result;
    var objectStore = database.createObjectStore("movies", { keyPath: "id" });
    objectStore.createIndex(‘alt’, ‘alt’, { unique: true });
    objectStore.createIndex(‘title’, ‘title’, { unique: false });
};

图片 4

onupgradeneeded
是我们唯一能够修改数据库结构的地点。在那么些中,大家能够创立和删除对象存款和储蓄空间以及创设和删除索引。

在数据库对象database上,有以下方法可供调用:

  1. createObjectStore(storeName, configObj) 创制1个目的存款和储蓄空间
    • storeName // 对象存款和储蓄空间的名称 [string]
    • configObj // 该对象存款和储蓄空间的布署 [object]
      (个中的keyPath属性值,标志对象的该属性值唯一)
  2. createIndex(indexName, objAttr, configObj) 成立贰个目录
    • indexName // 索引名称 [string]
    • objAttr // 对象的质量名 [string]
    • configObj // 该索引的布局对象 [object]

        compile’com.github.bumptech.glide:glide:4.0.0′

图片 5

肆 、增删数据

对数据库的操作(增加和删除查改等)都亟需通过事务来完成,事务具备三种格局:

  • readonly 只读(能够并发进行,优先利用)
  • readwrite 读写
  • versionchange 版本更改

到当下地点,它的安定版本现已到了 Glide:4.0.0
了。然后别忘了添加互联网权限(这一个很简单忘的,自身就吃过不少亏,呜呜~~)。

图片 6

网站地图xml地图