D2Admin八月更新:高级数据持久性|选项卡右键单击|模块化等标签页唯一的右键控件...概述D2Admin7月份更新到1.1.5版本。相关介绍在8月份即将结束。首先,我们会像往常一样列出本月比较重要的更新:1.1.6|1.1.7|1.1.10这三个版本新增并完善了多标签页控件的右键菜单功能。1.1.9优化多标签页数据持久化值逻辑。现在修改了路由信息后,页面刷新时会从持久化存储中获取数据。当它被赋值时,会再经过一次数据处理,根据名称字段匹配新的路由数据路由快照功能可以区分。文档重建菜单支持跳转到外部链接。页面过渡动画设置加入全局状态管理,支持用户私有持久化。$logAdd和$log快速记录和打印日志,并提供demo页面topbar和sidesidebar菜单,支持svg图标详情。多标签页控件右键菜单标签页右键菜单如下图红框所示,模拟普通浏览器或文件管理器标签页的功能:Demo-Close左:Demo-Otherfunctions:传统控制菜单右边还是保留了:我对比了www.awesomes.cnvue专用控制面板上的各个控制面板,最后发现支持右键菜单的很少。大部分不支持多页,但支持多页。页面支持选项卡的右键。目前只找到一个,除了D2Admin。项目多页面模式多tab右键菜单菜单功能vue-element-adminsupportsupportclose,closeother,closeallvue-bulma/vue-admin不支持--iview-adminsupport不支持-vuestic-admin不支持--vue-admin不支持--d2-admin支持支持closeleft,closeright,closeothers,closeallcoreui-free-vue-admin-template不支持--sls-admin-vue支持doesnotsupport-Vue-AdminNotsupported--avuesupportsnotsupported-dashboarddoesnotsupport-so如果你想让你的admin后台支持多页模式,并且有tab页右键控制,D2Admin会是你的几个之一选择。多种数据持久化方法1.2.0版对数据持久化进行了更清晰的封装。这里只用官方文档的四分之一做简单介绍。具体使用方法请移步至官方文档。D2Admin数据持久化依赖于浏览器的LocalStorage,并使用lowdbAPI加上自身的valuewrapper来实现便捷的操作和取值方法。通过不同的接口,可以访问持久化数据的不同内容,比如对不同的用户是唯一的。存储区、系统存储区、公共存储区、根据路由自动划分的存储区等。在src/store/modules/d2admin/modules/db.js文件中,提供了4组9个方法进行读写持久化数据。我应该选择哪种方法?您可能对如何选择用于持久存储的API感到困惑。下图将帮助您在存储数据时根据需要选择合适的存储方式:如果要读取数据,仍然按照上图中的选择条件。概念D2Admin数据持久化主要有以下几个概念:首先是存储实例,请对lowdb有一定的了解,lowdb是通过lodash实现数据操作的封装,下面的例子演示了lowdb在浏览器中的使用:importlowfrom'lowdb'从'lowdb/adapters/LocalStorage'constadapter=newLocalStorage('db')constdb=low(adapter)db.defaults({posts:[]}).write()db.get('posts')导入LocalStorage.push({title:'lowdb'}).write()D2Admin中的存储实例指的是上面代码中的db步骤(高亮行)。获取存储实例后,可以使用lodash语法直接操作存储实例,最后使用lowdb的writeAPI将变化同步回浏览器的LocalStorage。UserprivateUserprivate是指不同用户使用同一个api访问存储实例所指向的存储位置。例如,用户A使用如下代码存储一条信息:constdb=awaitthis.$store.dispatch('d2admin/db/database',{user:true})db.set('myName','userA').write()B用户使用以下代码存储一条信息:constdb=awaitthis.$store.dispatch('d2admin/db/database',{user:true})db.set('myName','userB').write()请注意前三行代码是一样的,两个用户获取存储实例使用的接口是同一个接口,只是保存的数据不同。然后A和B使用相同的值代码:constdb=awaitthis.$store.dispatch('d2admin/db/database',{user:true})constmyName=db.get('myName')。这次value()使用的代码一模一样,只是用户A登录时获取的值为myName=userA,用户B登录时获取的值为myName=userB。上述特征是“用户私有的”。在D2Admin中,所有数据持久化API都支持数据私有配置。路由存储路由存储的含义与上面描述的“用户私有”类似,区别如下:概念数据根据用户私有用户uuid区分路由存储route.nameorpathorfullPath示例:使用如下代码在第一页存储一条信息:constdb=awaitthis.$store.dispatch('d2admin/db/databasePage',{vm:this})db.set('pageName','page1').write()使用相同的代码在第2页存储不同的信息:constdb=awaitthis.$store.dispatch('d2admin/db/databasePage',{vm:this})db.set('pageName','page2').write()然后在第1页使用与第2页完全相同的代码值:constdb=awaitthis.$store.dispatch('d2admin/db/databasePage',{vm:this})constpageName=db.get('pageName').value()会在第1页得到pageName=page1,在第2页得到pageName=page2。证书数据按照路由划分。“路由存储”也支持“用户私有”,可以将两者结合使用,使用以下代码获取用户私有路由存储:constdb=awaitthis.$store.dispatch('d2admin/db/databasePage',{vm:this,user:true})数据格式先展示完整的D2Admin数据存储格式:不要被这张图吓到,你在使用过程中不会对这个结构有任何感知,API直接返回供您操作的节点此图显示了数据的公共存储、用户存储、路由存储、私有路由存储、路由快照和私有路由快照的存储位置。现在你会感到迷茫,但请注意以下几点:sys模块中,你不会在业务代码中访问数据库中的存储结构。您永远不会使用某个API来获取所有这些。每次你只操作某个节点下的一部分数据,D2Admin使用不同的API来简化你上面的数据。在错误捕获框架中快速定位到需要的数据节点。错误捕获过程已经完成。您不需要任何设置。当出现错误时,会自动将错误记录在日志中,并在控制台显示相关的错误信息。日志查看界面:控制台输出:只在开发模式下输出日志记录使用$logAdd快速记录日志示例:查看日志:使用方法:this.$logAdd('yourlogtext')控制台输出widget使用$log漂亮的日志信息可以在控制台输出
