From ab0525815e7bb87e669fb0d693c78b4aaabadc60 Mon Sep 17 00:00:00 2001 From: liyang <1711467488@qq.com> Date: Tue, 21 Aug 2018 11:07:29 +0800 Subject: [PATCH] no message Former-commit-id: adfa3f1394805c8b009cc367399c4e712abe993e [formerly adfa3f1394805c8b009cc367399c4e712abe993e [formerly adfa3f1394805c8b009cc367399c4e712abe993e [formerly adfa3f1394805c8b009cc367399c4e712abe993e [formerly 1ab77a4d3d84656cd268a2161df499a4a5fe92c4 [formerly 9fc605f8f317c52990d9cdfeea6dd489288cbcd1]]]]] Former-commit-id: c27beed49662b6496ab6a63a5f78d761ead52874 Former-commit-id: 5f0c79d815cf627a2ec8c47eb77c0d00d6e8516e Former-commit-id: a71137243b2906941b0998dd76f7f1d02af3e5df [formerly ecfca8e9bad69cf7fbc5a9cf83355f94be84ec0d] Former-commit-id: caeaa038793a0e87b00f8a53529bde3b56a12ba8 Former-commit-id: 1e50e5964260d0eb9593e65acb0caa12411b787d Former-commit-id: 89c18604b00c3f796667579de3e2193aa93eecfa Former-commit-id: d9cea88bcff207d5f1d6714ee27297533b7dfad9 Former-commit-id: 94ba19b57c008db8a669f074b3af4d254c699eb8 --- docs/.vuepress/config.js | 1 + docs/zh/plagiarize/README.md | 49 ++++ docs/zh/sys-db/README.md | 262 ---------------------- docs/zh/sys-db/README.md.REMOVED.git-id | 1 + docs/zh/sys-vuex/README.md.REMOVED.git-id | 2 +- 5 files changed, 52 insertions(+), 263 deletions(-) create mode 100644 docs/zh/plagiarize/README.md delete mode 100644 docs/zh/sys-db/README.md create mode 100644 docs/zh/sys-db/README.md.REMOVED.git-id diff --git a/docs/.vuepress/config.js b/docs/.vuepress/config.js index d443fdfd..0f893aef 100644 --- a/docs/.vuepress/config.js +++ b/docs/.vuepress/config.js @@ -77,6 +77,7 @@ module.exports = { items: [ { text: '更新日志', link: '/zh/change-log/' }, { text: '参与者名单', link: '/zh/collaborator/' }, + { text: '借鉴 D2Admin 的项目', link: '/zh/plagiarize/' }, { text: '交流', items: [ diff --git a/docs/zh/plagiarize/README.md b/docs/zh/plagiarize/README.md new file mode 100644 index 00000000..fe7ca3e0 --- /dev/null +++ b/docs/zh/plagiarize/README.md @@ -0,0 +1,49 @@ +--- +sidebar: auto +--- + +# 借鉴 D2Admin 的项目 + +以下开源项目中借鉴了 D2Admin 代码。 + +本页面不明确指出哪些是借鉴哪些是抄袭,由读者自行判断。 + +本页面作用是指明哪些东西是 D2Admin 原创的,避免大家看到和其它项目有类似设计时发生误会以为 D2 抄袭他人(误会发生过)。 + +::: tip +图片右键在新标签页打开查看大图 +::: + +**此页面截图都会标注日期,只新增,不删除,只代表当时日期的状态** + +## nx-admin + +[https://github.com/mgbq/nx-admin](https://github.com/mgbq/nx-admin) + +### 2018年7月29日 + +* 项目首页已经放置 D2Admin 链接 + +| D2Admin | nx-admin | +| --- | --- | +| ![](http://fairyever.qiniudn.com/20180727103812.png) | ![](http://fairyever.qiniudn.com/20180727103329.png) | +| ![](http://fairyever.qiniudn.com/20180727103923.png) | ![](http://fairyever.qiniudn.com/20180727103931.png) | +| ![](http://fairyever.qiniudn.com/20180727104208.png) | ![](http://fairyever.qiniudn.com/20180727104213.png) | +| ![](http://fairyever.qiniudn.com/20180727104225.png) | ![](http://fairyever.qiniudn.com/20180727104232.png) | +| ![](http://fairyever.qiniudn.com/20180727104240.png) | ![](http://fairyever.qiniudn.com/20180727104245.png) | +| ![](http://fairyever.qiniudn.com/20180729104137.png) | ![](http://fairyever.qiniudn.com/20180729104152.png) | + +## avue + +[https://github.com/nmxiaowei/avue](https://github.com/nmxiaowei/avue) + +### 2018年7月29日 + +* 项目首页已经放置 D2Admin 链接 + +| D2Admin | avue | +| --- | --- | +| ![](http://fairyever.qiniudn.com/20180729105741.png) | ![](http://fairyever.qiniudn.com/20180729105748.png) | +| ![](http://fairyever.qiniudn.com/20180729110207.png) | ![](http://fairyever.qiniudn.com/20180729110231.png) | +| ![](http://fairyever.qiniudn.com/20180729105822.png) | ![](http://fairyever.qiniudn.com/20180729105839.png) | +| ![](http://fairyever.qiniudn.com/20180729105855.png) | ![](http://fairyever.qiniudn.com/20180729105908.png) | diff --git a/docs/zh/sys-db/README.md b/docs/zh/sys-db/README.md deleted file mode 100644 index d5f4b428..00000000 --- a/docs/zh/sys-db/README.md +++ /dev/null @@ -1,262 +0,0 @@ ---- -sidebar: auto ---- - -# 数据持久化 - -D2Admin 对数据持久化做了更清晰的包装,您可以通过 - -在 `src/store/modules/d2admin/modules/db.js` 文件中提供了4组共9个方法读写持久化数据 - -![](http://fairyever.qiniudn.com/20180820235417.png?imageMogr2/auto-orient/thumbnail/1480x/blur/1x0/quality/100|imageslim) - -## 总览 - -D2Admin 数据持久化依赖浏览器的 LocalStorage,使用 [lowdb](https://github.com/typicode/lowdb) API 加自己的取值包装实现了便捷的的操作和取值方法,通过不同的接口可以访问到持久化数据不同的内容,例如不同用户独有的存储区域,系统存储区域,公用存储,根据路由自动划分的存储区域等。 - -## 概念 - -D2Admin 数据持久化主要有以下概念: - -### 存储实例 - -首先请先对 [lowdb](https://github.com/typicode/lowdb) 有一定的了解,[lowdb](https://github.com/typicode/lowdb) 通过 [lodash](https://lodash.com/) 实现了对数据操作的封装,下面的例子演示了 lowdb 在浏览器中的使用方式: - -``` js {5} -import low from 'lowdb' -import LocalStorage from 'lowdb/adapters/LocalStorage' - -const adapter = new LocalStorage('db') -const db = low(adapter) - -db.defaults({ posts: [] }) - .write() - -db.get('posts') - .push({ title: 'lowdb' }) - .write() -``` - -D2Admin 中的存储实例指的是上述代码中 `db` 那一步(高亮行),在获得了存储实例后你可以使用 [lodash](https://lodash.com/) 语法直接操作存储实例,最后使用 [lowdb](https://github.com/typicode/lowdb) 的 `write` API 将变化同步回浏览器的 LocalStorage。 - -### 用户私有 - -用户私有指不同的用户使用同一个 api 访问到的存储实例指向的存储位置,例如 A 用户使用下面的代码存储了一段信息: - -``` js {5} -const db = await this.$store.dispatch('d2admin/db/database', { - user: true -}) -db - .set('myName', 'userA') - .write() -``` - -B 用户使用下面的代码存储了一段信息: - -``` js {5} -const db = await this.$store.dispatch('d2admin/db/database', { - user: true -}) -db - .set('myName', 'userB') - .write() -``` - -请注意代码的前三行都是一样的,两个用户使用的获取存储实例接口是同一个接口,只不过保存的数据不同。 - -然后 A 和 B 使用同样的取值代码取值: - -``` js {4} -const db = await this.$store.dispatch('d2admin/db/database', { - user: true -}) -const myName = db.get('myName').value() -``` - -这次是使用完全一样的代码,但是 A 用户登陆的情况下取得的值是 `myName = userA`,B 用户登陆的情况下取得的值是 `myName = userB`。 - -上面介绍的特性即为“用户私有”,**在 D2Admin 中,所有的数据持久化 API 都支持数据私有配置**。 - -### 路由存储 - -路由存储含义和上面介绍的“用户私有”相像,区别如下: - -| 概念 | 数据区分依据 | -| --- | --- | -| 用户私有 | 用户 uuid | -| 路由存储 | `route.name` 或者 `path` 或者 `fullPath` | - -举例说明: - -在 **页面1** 中使用下面的代码存储一段信息: - -``` js {5} -const db = await this.$store.dispatch('d2admin/db/databasePage', { - vm: this -}) -db - .set('pageName', 'page1') - .write() -``` - -在 **页面2** 中使用同样的代码存储一段不同的信息: - -``` js {5} -const db = await this.$store.dispatch('d2admin/db/databasePage', { - vm: this -}) -db - .set('pageName', 'page2') - .write() -``` - -然后在 **页面1** 和 **页面2** 上使用完全相同的代码取值: - -``` js -const db = await this.$store.dispatch('d2admin/db/databasePage', { - vm: this -}) -const pageName = db.get('pageName').value() -``` - -在 **页面1** 中会取到 `pageName = page1`,在 **页面2** 中会取到 `pageName = page2`。证明数据被依据路由划分。 - -::: tip -“路由存储”同时也支持“用户私有”,您可以将两者结合使用,使用下面的代码即可获得用户私有的路由存储: - -``` js {3} -const db = await this.$store.dispatch('d2admin/db/databasePage', { - vm: this, - user: true -}) -``` -::: - -### 数据格式 - -首先展示完整的 D2Admin 数据存储格式: - -![](http://fairyever.qiniudn.com/20180821090300.png?imageMogr2/auto-orient/thumbnail/1480x/blur/1x0/quality/100|imageslim) - -这张图体现了数据的普通存储、用户存储、路由存储、私有路由存储、路由快照以及私有路由快照的存储位置,现在您会感觉很乱,但是请注意以下几点: - -* sys 模块您在业务代码中不会访问 -* database 中的存储结构您绝不会使用某一个 API 全部获得,每次您操作的只是某个节点下的一部分数据,D2Admin 通过不同 API 来简化您在上述数数据中快速定位到需要的数据节点 - -## root 级别方法 - -root 级别的方法有两个,分别为: - -* [d2admin/db/set](../sys-vuex/#actions-set) -* [d2admin/db/get](../sys-vuex/#actions-get) - -调用方式为: - -``` js -// 写入数据 -this.$store.dispatch('d2admin/db/set', { - dbName: 'database', - path: 'demo.sometext', - value: 'Hello World' -}) -``` - -``` js -// 读取数据 -const value = await this.$store.dispatch('d2admin/db/get', { - dbName: 'database', - path: 'demo.sometext', - defaultValue: 'Hello World' -}) -``` - -这两个方法可以在持久化数据中的任意位置(也就是上面“数据格式”章节中展示的图片上所有节点)进行读写操作,D2Admin 内部模块使用此 API 访问持久化数据,**不建议在业务代码中使用**,除非您非常清楚您正在做什么。 - -## 获得存储实例 - -要想向持久化数据中写入数据或者读取数据,第一步就是获得存储实例。可以通过 `d2admin/db/get` 获得存储实例。 - -### 公用 - -使用如下代码获取公用存储实例: - -``` js -const db = await this.$store.dispatch('d2admin/db/database') -``` - -您将获得下图所示节点(绿色高亮区域): - -![](http://fairyever.qiniudn.com/20180821091548.png?imageMogr2/auto-orient/thumbnail/1480x/blur/1x0/quality/100|imageslim) - -写入: - -``` js -const db = await this.$store.dispatch('d2admin/db/database') -db - .set('keyName', 'value') - .write() -``` - -结果: - -![](http://fairyever.qiniudn.com/20180821092216.png?imageMogr2/auto-orient/thumbnail/1480x/blur/1x0/quality/100|imageslim) - -取值: - -``` js -const db = await this.$store.dispatch('d2admin/db/database') -db.get('keyName').value() // 'value' -``` - -### 私有 - -如果需要,您也可以获取根据用户区分的私有存储实例: - -``` js -const db = await this.$store.dispatch('d2admin/db/database', { - user: true -}) -``` - -假设当前登陆用户的 uuid 为 uuid-A,您将获得下图所示节点(绿色高亮区域): - -![](http://fairyever.qiniudn.com/20180821092920.png?imageMogr2/auto-orient/thumbnail/1480x/blur/1x0/quality/100|imageslim) - -写入: - -``` js -const db = await this.$store.dispatch('d2admin/db/database', { - user: true -}) -db - .set('keyName', 'value') - .write() -``` - -结果: - -![](http://fairyever.qiniudn.com/20180821093132.png?imageMogr2/auto-orient/thumbnail/1480x/blur/1x0/quality/100|imageslim) - -取值: - -``` js -const db = await this.$store.dispatch('d2admin/db/database', { - user: true -}) -db.get('keyName').value() // 'value' -``` - -如果是不同用户分别使用上面的代码存储,存储结果将是: - -![](http://fairyever.qiniudn.com/20180821093321.png?imageMogr2/auto-orient/thumbnail/1480x/blur/1x0/quality/100|imageslim) - -取值时将分别取到 value1,value2,value3 - -## 获得路由存储实例 - -### 公用 - -### 私有 - -## 路由快照操作 \ No newline at end of file diff --git a/docs/zh/sys-db/README.md.REMOVED.git-id b/docs/zh/sys-db/README.md.REMOVED.git-id new file mode 100644 index 00000000..895b9282 --- /dev/null +++ b/docs/zh/sys-db/README.md.REMOVED.git-id @@ -0,0 +1 @@ +99079c67d0aa0e3bff25dee1a4bf7d1d1f9312fb \ No newline at end of file diff --git a/docs/zh/sys-vuex/README.md.REMOVED.git-id b/docs/zh/sys-vuex/README.md.REMOVED.git-id index aa90a54c..269c6858 100644 --- a/docs/zh/sys-vuex/README.md.REMOVED.git-id +++ b/docs/zh/sys-vuex/README.md.REMOVED.git-id @@ -1 +1 @@ -d991a147e53c59451408d5106031d926cb69a35f \ No newline at end of file +6d1ab0795b7a8af170734dfabddadca1da1329cf \ No newline at end of file