记录一些前端数据存储的方法!
JS文件
把一些常用数据(json对象、字符串等)保存在js文件中,通过script标签引入使用。
创建
创建js文件
引入
script引入js文件。./
代表当前目录,../
代表上级目录。
使用
使用js文件中的数据、变量、函数、类等。
扩展
vue-cli开发的项目中,想在.vue文件中导入js文件。笔记见:VUE-汇总/导入js文件
Storage API
Web Storage 包含如下两种机制:
sessionStorage
为每一个给定的源(given origin)维持一个独立的存储区域,该存储区域在页面会话期间可用(即只要浏览器处于打开状态,包括页面重新加载和恢复)。localStorage
同样的功能,但是在浏览器关闭,然后重新打开后数据仍然存在(大小限制通常在 2.5-10M之间)。
案例
localStorage案例,给localStorage设置过期时间。
封装Storage类
封装Storage类,可以保存在单独的js文件中,通过script标签引入使用。
1 |
class Storage { |
使用
保存:
保存:参数可以设置三个,name-作为键key,value-作为值value,expires-过期时间(毫秒)
1 |
let storage = new Storage(); |
获取:
1 |
let value = storage.getItem('name');//获取 |
扩展
localStorage有大小的限制(通常在 2.5-10M之间),有大数据量存储需求可以使用插件localForage。
localForage使得离线数据存储在任何浏览器都是一项容易的任务。若浏览器不支持 IndexedDB 或 WebSQL,则使用 localStorage。localForage 的使用方法与localStorage相似很容易上手,可以查看官方文档了解。
默认情况下,localForage 按照以下顺序选择数据仓库的后端驱动:
- IndexedDB
- WebSQL
- localStorage
注意:vue-cli开发的项目中使用,可以查看这篇文档。
应用场景:移动APP开发,数据保存在本地,无大小限制。(表数据也可以使用json格式保存)
前端数据库
IndexedDB API是强大的,但对于简单的情况可能看起来太复杂。如果你更喜欢一个简单的API,请尝试 localForage、dexie.js、PouchDB、idb、idb-keyval、JsStore 或者 lovefield 之类的库,这些库使 IndexedDB 对开发者来说更加友好。
注意:Web SQL兼容性不好,一般使用基于IndexedDB API的第三方库来简化数据存储操作。
案例
WebSQL案例,了解学习即可,Web SQL的兼容性并不是特别理想,仅chrome ,safari,opera 10.5+等浏览器支持。
封装DaoTools工具
封装DaoTools工具(一个json对象),可以保存在单独的js文件中,通过script标签引入使用。
根据需要创建数据库,编写相应的crud函数,也可以直接调用transaction函数使用sql语句进行crud操作。
1 |
//前端数据库Web SQL,Web SQL的兼容性并不是特别理想,仅chrome ,safari,opera 10.5+等浏览器支持。 |
使用
DaoTools是一个json对象,直接DaoTools.queryAll
方式调用其中封装的函数即可。
1 |
DaoTools.queryAll('userinfo',data=>{ |
扩展
Web SQL的兼容性并不是特别理想,归咎其原因,主要是因为 Web SQL Database API 实际上并不包含在 HTML5
规范之中。它是一个独立的规范,它引入了一套使用 SQL 操作客户端数据库的 API。其规范已经被停止更新了,所以大多数浏览器并不支持。
Web SQL相对于
sessionStorage ,locationStorage最大的优势 :能方便的进行对象存储、能进行大量的数据的处理。
总结
- 主要用于PC端的web 应用,想使用sql语句进行数据crud操作,可以使用Web SQL
- 页面传递参数、状态记录等小数据量场景,可以考虑Storage API
- 不是上边的应用场景,建议使用插件localForage