Web产品中很多时候需要在客户端,即浏览器中保存一些必要的数据。而面临这类需求时,你应当知悉对应的解决方案不仅仅只有一种。
这是最早被使用,且至今仍被广泛采用的最简单的浏览器中保存数据方法。
Cookie使用键/值形式存储数据,且数据类型只能为字符串。
Cookie相关的CRUD操作:
document.cookie="username=Ken";
document.cookie="username=Foo";
和创建Cookie的语法一致,新的值会覆盖原有的值。
var cookies = document.cookie
以上方法可以获取所有的Cookie键值,要想获得特定键值的话可以用以下代码实现,其中的username可以替换成实际的键值:
var cookieValue = document.cookie.replace(/(?:(?:^|.*;\s*)username\s*\=\s*([^;]*).*$)|^.*$/, "$1");
document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 GMT";
虽然没有直接的删除方式,但可以通过设置过期时间来解决这个问题。
html 5 Web存储方式的一种,主要优势是突破cookie最大只有4KB容量的限制,能够保存10MB的数据。
与Cookie同样地使用键/值形式存储数据,且数据类型只能为字符串。
LocalStorage相关的CRUD操作:
localStorage.setItem('username', 'Ken');
localStorage.setItem('username', 'Foo');
同样是覆盖操作。
var username = localStorage.getItem('username');
localStorage.removeItem('username');
一次删除所有键值的方法:
localStorage.clear();
另一种html 5 Web存储方式,其与LocalStorage的唯一区别在于LocalStorage没有过期时间,要想去除已保存的数据,只能用代码执行删除操作。而用SessionStorage保存的数据在标签页或者浏览器窗口关闭后自动失效。
SessionStorage相关语法与LocalStorage一致。
该技术已被W3C废弃,理由是各厂家对其的实现方式都是基于SQLite的,从而被认为缺乏多样性而达不到标准化的要求。
并且该技术仅被Google Chrome,Opera,Safari和Android Browser使用。另两家主要的浏览器厂家的产品,Microsoft的Internet Explorer以及Mozilla的Firefox对它未提供支持。
因此结论是使用其它相似的替换品,而不要再使用它。
主流浏览器产品都支持的一种技术,包括桌面端与移动端。Web SQL Database的替代品。
IndexedDB同Cookie,Local Storage与Session Storage的差别主要有:
IndexedDB的使用方法与一般的数据库有些相似,但因为其所有操作都是异步,所以编写代码时的体验还是很不一样的。
第一步是打开一个数据库,如果该数据库不存在的话,会自动创建一个。
在IndexedDB中,ObjectStore是其它数据库中数据表的概念。
创建ObjectStore时除了可以指定主键之外,还可以对其它字段建立索引。
var db;
var request = window.indexedDB.open('info');
request.onsuccess = function (event) {
db = request.result;
};
request.onupgradeneeded = function(event) {
db = event.target.result;
var objectStore = db.createObjectStore('user', { keyPath: 'id' });
objectStore.createIndex("name", "name", { unique: false });
}
IndexedDB相关的CRUD操作:
function create() {
var store = db.transaction('user', 'readwrite').objectStore('user')
var request = store.add({ id: 1, name: 'Ken', email: 'ken@example.com' });
}
create();
function update() {
var store= db.transaction('user', 'readwrite').objectStore('user')
var request = store.put({ id: 1, name: 'Ken', email: 'ken@sample.com' });
}
update()
使用主键查询数据的方法:
function query() {
var store = db.transaction('user', 'readonly').objectStore('user')
var request = store.get(1)
request.onsuccess = function(event) {
console.log(request.result)
}
}
query()
使用其它字段索引查询数据的方法:
function query() {
var store = db.transaction('user', 'readonly').objectStore('user')
var request = store.index('name').get('Ken')
request.onsuccess = function(event) {
console.log(request.result)
}
}
query()
function delete() {
var store = db.transaction('user', 'readwrite').objectStore('user')
var request = store.delete(1);
}
delete()
WeakSet和Set类似,同样是元素不重复的集合,它们的区别是WeakSet内的元素必须是对象,不能是其它类型。成员都是对象;.成员都是弱引用;不能遍历
将table标签,包括tr、td等对json数据进行拼接,将table输出到表格上实现,这种方法的弊端在于输出的是伪excel,虽说生成xls为后缀的文件,但文件形式上还是html;通过将json遍历进行字符串拼接,将字符串输出到csv文件
很多时候需要利用formdata数据格式进行前后端交互。前端代码可以是如下所示:上面代码不仅有直接生成的formdata数据,还有利用append添加的。后端应该怎么接收?
CSS中属性的值有着许多种格式。为了让用户代理(即浏览器)能够识别一个值是否有效,则需要确认该值是否符合该类值支持的格式的其中一种。这些属性值所支持的格式叫做数据类型,在规范中用<this>的形式标识。
链表和数组的对比:在大多数语言中,数组的大小是固定的,从数组的起点或中间添加或删除元素的成本很高,因为需要移动元素,链表中的每一个元素在内存中不是连续放置的,和它左右两侧元素是没有关系的
栈的特点是LIFO,即后进先出(Last in, first out)。数据存储时只能从顶部逐个存入,取出时也需从顶部逐个取出。队列的特点是是FIFO,即先进先出(First in, first out)。堆的特点是无序的key-value键值对存储方式。
在js中我们直接这样写typeof obj===‘object’有什么问题呢?发现Array, Object,null都被认为是一个对象了。如何解决这种情况,能保证判断obj是否为一个对象
本文讲述的数据模型并不是一个库,也不是需要npm的包,仅仅只是一种在多人团队协作开发的时候拟定的规则,也不用担心后台数据的字段或结构发生变动,真正实现前后台并行开发的愉快模式。
直观上理解:相同点是两者都是存储数据。不同点是数据库主要是基本的、日常的事务处理,例如银行交易;数据仓库,支持复杂的分析操作,侧重决策支持。
HTTP无状态协议,是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!