【插件】轻量级响应式本地数据库插件使用分享

你这种也挺好啊 我能想到的就是可以扩展写个技能编辑器之类的 对团队协作也是很有帮助的 适合那种精心配置数据的游戏 我上面说的其实主要是挂机放置类游戏

当然如此,读取和写入最频繁的,你只能用 setXXX,getXXX 等类似函数而且多级对象更麻烦

而我的方式直接使用原生对象操作,谁更容易一目了然,如果是正常人的认知的话

另外请你举例我的工具大项目不能用的原因?而不是做毫无根据的结论,如果向你学习没有任何原因就能得出结论的方式,我可以说你的工具没有任何一个项目使用

照你这样说,那面向对象编程比面向过程编程复杂,那为啥现在没啥项目用面向过程了。面向对象编程不仅写起来繁琐一些,理解起来也更难。编程不是你想的,我写一个hello world能简单写,就表示大项目这么写没问题。

你去看一下类似安卓系统这种超大型项目,代码几千万行的那种。里面的类结构有多复杂,你就知道了。如果你能用面向过程写出来,也是神人了。当然过度设计也是不可取的,这就要找一个平衡点了。

在说一下数据库的事情,虽然不是所有游戏都用本地数据库,但是用数据库的游戏也不少吧。没人用我这个工具,也就是在你眼里数据库在游戏开发中基本没用咯。

indexeDB异步是为了在储存大数据的时候防止IO卡死浏览器。及其明显的例子就是用localStorage存储非常大的json时候,浏览器会直接卡顿几秒钟。跟游戏分帧加载一样的道理。

我看了下代码,还是在用sessionStorage localStorage在存储。sessionStorage无法持久化就不用看了。localStorage的问题是它的储存空间有限。尤其是之前的兄弟说的,那种非常吃excel配置的,立马储存空间就不够用了。

其次,我理解的cocos跟响应式开发不匹配,cocos有自己的生命周期。你无法保证你修改的节点或者对象是否存在。如果不存在,那你怎么办?每个监听还得价格判断么?

我的框架已经完全适配了,有兴趣可以体验,生命周期结束自动取消事件

对于我的工具,你无法否认的几点

  1. 你自傲的功能要么原生对象支持,要么可以低成本一次实现永久使用

  2. 使用代价更低,因为使用对象

  3. 学习成本0,因为只要懂ts.js就能用

  4. 适用范围广,可以适配任何数据,而你的全都需要转换

  5. 更灵活,可以任意定制,嵌入,支持任意数据格式

以前我本来想把我的配置表导出工具支持下sqlite,后来啥导出都支持了,就是sqlite没支持,为啥呢?因为我就没找到使用场景和项目。。。

问题是, 接口是异步反回的, 但写入数据这个处理是同步, 你试试在写入一个大文件, 在手机上只有cpu差一点基本上主进程就是卡住的, 那这个异步有甚麽用呢?我最后还是要在worker中去写入, 如果要这様那还不如直接弄成同步接口, 使用者需要异步时自己在worker里写就好

持久化这块支持多种方式,如果localStorage不够用,可以用文件持久化存储。但浏览器、小游戏平台可能用不了。

如果你的数据跟一个不存在的对象绑定了,那这个数据就不需要响应式了,也就是你不必监听这个数据的变更。还有一种情况是,你预期是要绑定对象的,但是运行过程中这个节点需要销毁了。那么你应该把监听器也一并销毁。但是这么处理起来确实比较繁琐。我计划后续给这个数据库扩展一个功能,预想的是开发者只需要配置好数据与节点的映射关系即可。这些注册监听器、销毁监听器等操作都自动完成。