[鼠年全马] W13 - JavaScript学习心得 - 你的一切已被记录下来

什么是 localStorage ?

有在开发web网页的工程师都会知道 cookie 是什么?
不是饼乾, 也不是我xD
它是一个可以在浏览器上暂存资料的方式
但它可以存放的资料大小很小 仅约4KB左右

而 HTML5 新增的 localStorage 也是一种浏览器上暂存资料的方式
但它突破了 cookie 的大小限制达到5MB左右
使用key对应value(key : value)的方式来存取
可称作是「浏览器上的资料库」


localStorage实例

相信很多人都有这种经验
FB滑一滑就出现一些广告, 而且都与你最近感兴趣的事情相差不远
逛虾皮也是, 一打开就出现推荐商品排名, 看了就很想买
但仔细想想, 就会很毛骨悚然

你的一切 都被看透了呢

言归正传, 虽然这些网站无时无刻在监控你的一举一动, 但他们也不会吃饱太闲把所有东西都往后端资料库丢
试想, 假设储存1个人的资料只用了1MB, 逛虾皮的人动辄上百万, 就需要额外留1TB空间存放这些资料, 更不用说FB上亿人的资料了

所以他们用了非常 聪明的方式, 把这些资料全部留在用户端存放, 既不用消耗伺服器空间, 也能不透过后端做快速存取, 速度更快, 效率更高

那他们的资料存放在哪里呢??
你各位阿, 到FB页面上按下你键盘上的F12, 就会看到一段很可爱的文字
http://img2.58codes.com/2024/20118686AZ2uyM5s8k.jpg
但是不要管它xD
切换到 Application 页籤, 左侧找到 Local Storage, 点下FB的url就会发现
http://img2.58codes.com/2024/20118686Y4xTEdjk4U.jpg
挖夭寿勒, 满满的资料被存放在这里http://img2.58codes.com/2024/emoticon04.gif
你电脑的空间, 就是这样一点一滴的被吃掉的xD

再来看看另一个六角课程上举的範例 - 萌典
这个範例更明显的呈现出用户搜寻的任何字词
http://img2.58codes.com/2024/20118686lfoOsTXe2I.jpg
并且打开 Local Storage 也会发现资料就直接完整存放在这边
http://img2.58codes.com/2024/201186864x1VYcfOBQ.jpg


使用方式

localStorage 存取方式非常简单

存: setItem(key, value)取: getItem(key)

举 萌典 的例来说, 如果我查了「帅」, 查询后就可以写一行:

var str = '帅';localStorage.setItem('myKey', str);

资料就存好了

取出来更简单

var myStr = localStorage.getItem('myKey');console.log(myStr); // "帅"

http://img2.58codes.com/2024/20118686cJogFw8QGI.png


存放JSON

很多时候需要存放的资料, 其实不会只有一个字串, 最常遇到的是需要存放整个JSON
但如果直接使用 setItem 存JSON字串, 好玩的事情就来了

// 存JSON字串localStorage.setItem('myKey', { key: ["我", "帅", "爆", "了", 123, 321, 1234567] });// 取出值console.log(localStorage.getItem('myKey')); // "[object Object]"

http://img2.58codes.com/2024/201186864ki6r7HRTy.jpg

装肖炜, 我是存这个东西进去吗?????
来检查看看...
http://img2.58codes.com/2024/20118686uc4KnASbkD.jpg
还真的存了这个鬼东西http://img2.58codes.com/2024/emoticon06.gif

会变成这样是因为

localStorage 的 value 只能存入字串

所以当需要存JSON时, 要先透过 JSON.Stringify 来转成字串再存放

// 存JSON字串var myJson = { key: ["我", "帅", "爆", "了", 123, 321, 1234567] };localStorage.setItem('myKey', JSON.stringify(myJson));

存好之后来检查一下..., 发现确实存好正确的资料了
http://img2.58codes.com/2024/20118686R47zKsOzAs.jpg

取出值, 也要透过转换 JSON.parse 来转成JSON

// 取出值var myStr = localStorage.getItem('myKey');console.log(JSON.parse(myStr)); // {key: ["我","帅","爆","了",123,321,1234567]}

如此就完成了JSON对 localStorage 的存取啰~http://img2.58codes.com/2024/emoticon12.gif


本週记录到此
结论, localStorage 是个非常也非常好用的东西http://img2.58codes.com/2024/emoticon01.gif

下週预计主题是 - Ajax
http://img2.58codes.com/2024/emoticon29.gifhttp://img2.58codes.com/2024/emoticon29.gifhttp://img2.58codes.com/2024/emoticon29.gif


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章