关于localstorage:Vue-高德地图-API-Loca-如何使用-连接线图层动画脉冲图层

Vue 高德地图 API Loca 如何应用 连接线图层、动画脉冲图层浏览此文你须要曾经理解并把握的: 曾经会应用惯例地图的生成形式曾经理解如何载入 Loca 插件如果不理解,能够查看我之前的文章:高德地图 Vue 中 加载 数据可视化 Loca 的形式如何应用高德地图 API 做一个路线布局利用,展现自定义路线高德地图 API Loca 3D动画的阐明最终实现的成果:"感激大哥送来的火箭" 一、基础知识官网的连接线例子是一个与我国建交的国家连线图其中用到的两个数据源是: 建交的连接线数据: https://a.amap.com/Loca/static/static/diplomacy-line.json建交的点数据:https://a.amap.com/Loca/static/static/diplomacy-point.json1. 这个视图中蕴含四个图层:一个盛放各省名称的文字图层 AMap.LabelsLayer一个盛放各省坐标点地位动画的图层 Loca.ScatterLayer一个盛放指标点坐标点地位的图层 Loca.ScatterLayer一个显示脉冲连接线的图层 Loca.PulseLinkLayer2. 做一个这样的视图须要哪几个步骤:新建一个 map,并载入 Loca 插件。遍历所有省份数据,生成省份名称图层 AMap.LabelsLayer遍历所有省份数据,生成省份地理坐标标识图层 Loca.ScatterLayer生成指标点的标识图层 Loca.ScatterLayer遍历所有省份数据,每个数据包【含指标点】、【以后省份坐标点】两个坐标点的数据,依据两个地点数据生成一条脉冲连接线。而后生成所有省份的连接线最终使 Loca 的动画动起来即可3. 建设脉冲线须要理解的常识脉冲线的建设过程是这样的: // 建设图层let pulseLayer = new Loca.PulseLinkLayer(图层参数)// 设置数据源pulseLayer.setSource(数据参数)// 设置款式pulseLayer.setStyle(款式参数)4. 用到的数据如何生成Loca 图层接管的数据是 Loca.GeoJSONSource 格局的,而这个对象接管的内容格局是这样的 let locaLayerData = new Loca.GeoJSONSource({ data: { 'type': 'FeatureCollection', // 固定 'features': [ // 这里就是点的数组 { 'type': 'Feature', // 本例中咱们用到的 geometry 有两个格局,一种是 `Point` 一种是 `LineString`, 'geometry': { 'type': 'Point', 'coordinates': [121.504673, 25.046711], // 天文经纬度 }, }, ], },})这是 LineString 格局时的 geometry 构造, ...

March 25, 2022 · 7 min · jiezi

关于localstorage:ExpiredStorage给localstroage增加超时功能-源码解读

https://www.npmjs.com/package...这个库拓展了localStroage。在设置item的时候,会另外再设置一个key用来存储过期工夫。当在取数据的时候判断是否过期并且remove元素。 用法 expiredStorage = new ExpiredStorage();// 60秒后过期expiredStorage.setItem("test", "foobar", 60);// 永不过期expiredStorage.setItem("no_expire", "this will live forever");// 获取数据,如果过期会返回nullvar item = expiredStorage.getItem("test");// 获取剩余时间var timeLeft = expiredStorage.getTimeLeft("test");// 检测key是否过期var isExpired = expiredStorage.isExpired("test"); // 获取所有的key(如果includeExpired是true, 连过期没来的删除的key也一并返回)var keys = expiredStorage.keys(includeExpired); // 返回这个key的详情var data = expiredStorage.peek("test");源码解读构造函数,这块就是一些边界判断,没什么 function ExpiredStorage(storage) { ... this._storage = storage; }重点是setItem和getItem ExpiredStorage.prototype = { // 根底stroage类,在构造函数中赋值 _storage: null, // 工夫戳key的前缀 _expiration_key_prefix: "__expired_storage_ts__", // 获取以后工夫 单位秒 getTimestamp: function() { return Math.floor(((new Date).getTime()) / 1000); }, setItem: function(key, value, expiration) { // set item var ret = this._storage.setItem(key, value); // 存储这个key对应的过期工夫 (仅仅在expiration有值的时候) if (expiration) { this.updateExpiration(key, expiration); } return ret; }, // 更新key的过期工夫,新的key位工夫戳前缀加旧的key updateExpiration: function(key, expiration) { return this._storage.setItem(this._expiration_key_prefix + key, this.getTimestamp() + expiration); }, getItem: function(key) { // 判断是否过期,过期了就删除这一项,返回null if (this.isExpired(key)) { this.removeItem(key); return null; } // 没过期就失常返回 return this._storage.getItem(key); }, // 判断是否过期 isExpired: function(key) { var timeLeft = this.getTimeLeft(key); return timeLeft !== null && timeLeft <= 0; }, // 获取剩余时间 getTimeLeft: function(key) { // 通过工夫戳key拿到过期工夫 var expireTime = parseInt(this._storage.getItem(this._expiration_key_prefix + key)); // 取到值就返回剩余时间 if (expireTime && !isNaN(expireTime)) { return expireTime - this.getTimestamp(); } // 没取到值就返回null return null; }, // 同时删除key和工夫戳key removeItem: function(key) { var ret = this._storage.removeItem(key); this._storage.removeItem(this._expiration_key_prefix + key); return ret; },}非常简单就实现了一个比拟麻烦的需要,这个仓库曾经四年没更新,还放弃着每周1k左右的下载量,拜服!! ...

October 9, 2021 · 1 min · jiezi

关于localstorage:使用浏览器的-Local-Storage-真的安全吗

LocalStorage 是一个 HTML5 网络存储对象,用于将数据存储在客户端——即本地,在用户的计算机上。 本地存储的数据没有到期日期,并且会始终存在,直到被删除。 (相比之下,会话存储是另一个 HTML5 网络存储 API,它会在浏览器敞开时删除存储的数据。) 本地存储是纯 JavaScript。 同样,尽管它依然在用户的设施上生成纯文本文档,但本地存储也容许存储多达 5MB 的数据(与 4KB 的 cookie 相比)。 这使得本地存储的许多乏味利用成为可能,例如治理内容以缩小从服务器申请内容的须要,放慢加载工夫。 只读的localStorage 属性容许你拜访一个Document 源(origin)的对象 Storage;存储的数据将保留在浏览器会话中。localStorage 相似 sessionStorage,但其区别在于:存储在 localStorage 的数据能够长期保留;而当页面会话完结——也就是说,当页面被敞开时,存储在 sessionStorage 的数据会被革除 。 localStorage 最次要的特点是: 在同源的所有标签页和窗口之间共享数据。数据不会过期。它在浏览器重启甚至零碎重启后依然存在。sessionStorage 对象的应用频率比 localStorage 对象低得多。 属性和办法是雷同的,然而它有更多的限度: sessionStorage 的数据只存在于以后浏览器标签页。具备雷同页面的另一个标签页中将会有不同的存储。然而,它在同一标签页下的 iframe 之间是共享的(如果它们来自雷同的源)。数据在页面刷新后依然保留,但在敞开/从新关上浏览器标签页后不会被保留。应用 local storage 的一个例子: 创立一个 textarea 字段,每当其值发生变化时,能够将其“主动保留”。 因而,如果用户不小心敞开了页面,而后从新关上,他会发现之前未实现的输出依然保留在那里。 像这样: <!doctype html><textarea style="width:200px; height: 60px;" id="area" placeholder="Write here"></textarea><br><button onclick="localStorage.removeItem('area');area.value=''">Clear</button><script> area.value = localStorage.getItem('area'); area.oninput = () => { localStorage.setItem('area', area.value) };</script> 如果应用切当,本地存储能够成为功能强大的轻量级数据存储解决方案,但并非没有问题。 以下是应用本地存储可能不是一个好主见的几个起因,具体取决于存储的内容。 Why using LocalStorage might be a bad idea本地存储实质上并不比应用 cookie 更平安。了解了这一点后,该对象可用于存储从平安角度来看无关紧要的数据。然而,以下是重新考虑应用本地存储的几个起因。 ...

July 27, 2021 · 1 min · jiezi

关于localstorage:localstorage时效存储库介绍

localStorage 时效存储记得当年在优信贷面试时,跟面试官说了在 localstorage 做有时效的存储的想法。 这样的想法其实很多人都会有的,集体也置信很多企业在理论中必定也有这样的实际。 浏览器罕用存储说这个问题前咱们先说下当初前端的集中本地存储。 cookie这个是传统服务器和浏览器都可操作的共享存储。特点: 1. 存储空间想多无限,个别组多为 4m。2. 因为每次传输会后携带,所以过大的会减少申请量,减少申请工夫,升高性能。3. 绝对不太平安。4. 存储为字符串键值对。5. 能够增加时效。sessionSstorage这个是 H5 新加的性能,最大的特点是只存在于浏览器关上的以后 tab 页面。如果敞开 tab 或者不敞开再新关上一个 tab,都不会存在以后这个 tab 的 session 数据。 还有一个特点就是没有时效性。 localStorage这个也是 H5 新加的个性其特点跟 session 一样,只是如果不去被动革除那么会始终存储在用户的电脑上。 除此之外还有其余特点。 1. 只存在于用户本地,相比cookie平安。2. 存储大小一般来说没有限度。什么是 localstorage 时效存储简而言之就是给 Localstorage 或者 sessionStorage 的值增加一个时效,过了这个时效,在获取这个字段的值为空或者从新获取。 这样做的益处就是利用了本地 storage 的安全性,同时也把其时效变得可控,也缩小了每次申请数据的累赘。 场景实用于那些耗时的申请,且该申请的数据对生效也有肯定要求。比方市场地理分布,各种须要缓存的列表等。 解决方案具体的原理非常简单,就是应用对象存储这个数据,而后给该对象增加时效字段,之后在每次获取数据时,进行判断该字段是否过期。 过期后也能够做刷新操作。 cddStore 介绍获取 npm i cdd-lib引入 import { CddStore } from 'cdd-lib'存储数据 import { CddStore } from "cdd-lib";let store = new CddStore([ { key: "name", value: "cdd" }, //默认是半天 { key: "age", value: 23, hours: 4 }, //设置时效是4个小时 { key: "name2", value: "今晚打老虎", days: 0.8, hours: 4 }, //设置时效是0.8天加上4个小时 { key: "session", value: "sdfasf", hours: 0.5, refresh() { return "dfasdfas"; }, }, //设置生效是30分钟,过期后能够应用refresh主动获取]);应用数据 ...

August 10, 2020 · 1 min · jiezi