renho 发表于 2023-7-18 23:30:31

分享篇三十九:扩展公式实现离线存储

本帖最后由 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.在任意地方使用上述公式即可










lovert 发表于 2023-7-19 08:26:46

你这个函数名称定义的不合理哦,在一些地方容易起冲突,set get del clear在某些库里都是保留字

紫色幽魂 发表于 2023-7-18 23:35:30

顶一个

pcsw18 发表于 2023-7-19 08:01:50

占个位,支持楼主

renho 发表于 2023-7-20 23:31:42

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());最后活字格的这几个公式名,官方并没有使用,我是可以使用的。


放下 发表于 2023-8-15 11:29:55

这个还是没有学会,能否出一个视频教程。
页: [1]
查看完整版本: 分享篇三十九:扩展公式实现离线存储