From 797c1093c03b47b0bee6a5a97077cb3acc69ac3e Mon Sep 17 00:00:00 2001 From: inori_lover <337938188@qq.com> Date: Wed, 29 Sep 2021 11:48:57 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E6=A0=BC?= =?UTF-8?q?=E5=BC=8F=E5=8C=96=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 - .vscode/settings.json | 8 ++++++++ README.md | 12 ++++++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 .vscode/settings.json diff --git a/.gitignore b/.gitignore index 6ed5d9c..9dfe6ba 100644 --- a/.gitignore +++ b/.gitignore @@ -14,7 +14,6 @@ yarn-error.log* pnpm-debug.log* # Editor directories and files -.vscode .idea *.suo *.ntvs* diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..ee1d870 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,8 @@ +{ + "editor.formatOnSave": true, + "editor.defaultFormatter": "esbenp.prettier-vscode", + "eslint.validate": ["vue", "javascript", "typescript", "javascriptreact", "typescriptreact"], + "editor.codeActionsOnSave": { + "source.fixAll.eslint": true + } +} diff --git a/README.md b/README.md index 556200e..aed8da4 100644 --- a/README.md +++ b/README.md @@ -1,21 +1,33 @@ # ebook_reader ## Project setup + ``` npm install ``` ### Compiles and hot-reloads for development + ``` npm run dev ``` ### Compiles and minifies for production + ``` npm run build ``` ### start local file serve + ``` npm run serve ``` + +### vscode plugin + +- [johnsoncodehk.volar](https://marketplace.visualstudio.com/items?itemName=johnsoncodehk.volar) + > do not install **any other** vue plugin or disable them all! +- [dbaeumer.vscode-eslint](https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint) +- [esbenp.prettier-vscode](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode) +- [mikestead.dotenv](https://marketplace.visualstudio.com/items?itemName=mikestead.dotenv) From 6aa194aa89f24a0214c4bb84cb0d51c4f6117139 Mon Sep 17 00:00:00 2001 From: inori_lover <337938188@qq.com> Date: Wed, 29 Sep 2021 12:16:33 +0800 Subject: [PATCH 2/3] =?UTF-8?q?feat:=20=E5=AE=9E=E7=8E=B0pinia=20debounce?= =?UTF-8?q?=20plugin?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main.ts | 4 ++-- src/plugins/pinia/debounce/index.ts | 23 +++++++++++++++++++++++ src/plugins/pinia/index.ts | 7 +++++++ 3 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 src/plugins/pinia/debounce/index.ts create mode 100644 src/plugins/pinia/index.ts diff --git a/src/main.ts b/src/main.ts index 118643e..ceafc09 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,5 +1,5 @@ import { createApp } from 'vue' -import { createPinia } from 'pinia' +import { piniaInstance } from '@/plugins/pinia' import App from './App.vue' import './assets/style/main.scss' import router from './router' @@ -20,4 +20,4 @@ app.directive('intersect', Intersect) app.directive('click-outside', ClickOutside) app.component('n-icon', NIcon) -app.use(createPinia()).use(router).use(naive).mount('#app') +app.use(piniaInstance).use(router).use(naive).mount('#app') diff --git a/src/plugins/pinia/debounce/index.ts b/src/plugins/pinia/debounce/index.ts new file mode 100644 index 0000000..9533419 --- /dev/null +++ b/src/plugins/pinia/debounce/index.ts @@ -0,0 +1,23 @@ +import { PiniaPluginContext } from 'pinia' +import { debounce } from 'lodash' + +declare module 'pinia' { + export interface DefineStoreOptions + extends DefineStoreOptionsBase> { + debounce?: { + // allow defining a number of ms for any of the actions + [k in keyof A]?: number + } + } +} + +/** 允许定义store时对某些action设置 debounce */ +export function debounceAction({ options, store }: PiniaPluginContext) { + if (options.debounce) { + // we are overriding the actions with new ones + return Object.keys(options.debounce).reduce((debouncedActions, action) => { + debouncedActions[action] = debounce(store[action], options.debounce![action]) + return debouncedActions + }, {} as any) + } +} diff --git a/src/plugins/pinia/index.ts b/src/plugins/pinia/index.ts new file mode 100644 index 0000000..f3ffed6 --- /dev/null +++ b/src/plugins/pinia/index.ts @@ -0,0 +1,7 @@ +import { createPinia } from 'pinia' +import { debounceAction } from './debounce' + +const piniaInstance = createPinia() +piniaInstance.use(debounceAction) + +export { piniaInstance } From f3a5ef5a6cdffabdb457d8b8e45fdd58a37c8e1f Mon Sep 17 00:00:00 2001 From: inori_lover <337938188@qq.com> Date: Wed, 29 Sep 2021 13:05:39 +0800 Subject: [PATCH 3/3] =?UTF-8?q?fix:=20=E5=8F=AF=E4=BB=A5=E6=B3=9B=E5=9E=8B?= =?UTF-8?q?=E4=BB=A3=E6=9B=BFas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/store/read.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/store/read.ts b/src/store/read.ts index 3eb9f07..407e389 100644 --- a/src/store/read.ts +++ b/src/store/read.ts @@ -41,7 +41,7 @@ export const useReadStore = defineStore('app.read', { } return this.book.opened.then(async (book) => { // 加载书籍信息并保存 - const info = (await localforage.getItem(this.bookId)) as Record + const info = await localforage.getItem>(this.bookId) if (info && info.cover) { this.cover = info.cover as string