分享篇三十九:扩展公式实现离线存储
本帖最后由 renho 于 2023-8-15 20:34 编辑web发展到现在,其实有很多高级的接口可用,而且是桌面和移动端通用的接口
比如Service Workers、websql和indexedDB
但是今天的和这些都没关系
有两个概念就是本地存储localStorage和会话存储sessionStorage
区别就是sessionStorage里面的数据在页面会话结束时会被清除。
localStorage则不会。
正是因为上述两个接口存在可以让我们以一种通用的方式,在离线模式下存储数据(KV存储)。
好了具体的不多解释,简单点就是可以像变量一样存储数据。
为了使这些api更易用,我把他们做成了自定义函数。
大家可以像excel函数一样的进行使用。
大概就像下图一样
如果是本地存储
=GET(key)获取
=SET(key,value)存储
=DEL(key)删除
=CLEAR() 清空
同样的会话存储用法一致(仅仅是前面多了下划线)
=_GET(key)获取
=_SET(key,value)存储
=_DEL(key)删除
=_CLEAR() 清空
有了这几个函数就可以为所欲为了,想怎么存储怎么存储
ps:公式在命令里面也是可以用的
好了最后附上的js(4K)
解压后添加到全局自定义JS里面
使用教程
1.在工程 设置 -> 自定义js/CSS -> 添加js文件
2.在任意地方使用上述公式即可
你这个函数名称定义的不合理哦,在一些地方容易起冲突,set get del clear在某些库里都是保留字 顶一个 占个位,支持楼主 lovert 发表于 2023-7-19 08:26
你这个函数名称定义的不合理哦,在一些地方容易起冲突,set get del clear在某些库里都是保留字
感谢提醒
首先我得指出请不要混淆概念,我的初衷是让公式名容易记才这么定义的,因为自定义公式在活字格设计器里面是不带提示的
再者这个是公式名,公式不是函数,函数名是这样的
//set
function setlocalStorageFunction() {
this.name = 'set';this.maxArgs = 2;this.minArgs = 2;
}
setlocalStorageFunction.prototype = new GC.Spread.CalcEngine.Functions.Function();
setlocalStorageFunction.prototype.evaluate = function (key,value) {
var a= localStorage.setItem(key,value);
return a;
}
setlocalStorageFunction.prototype.isContextSensitive(function(){return true})
GC.Spread.CalcEngine.Functions.defineGlobalCustomFunction("set", new setlocalStorageFunction());最后活字格的这几个公式名,官方并没有使用,我是可以使用的。
这个还是没有学会,能否出一个视频教程。
页:
[1]