{"id":20098571,"url":"https://github.com/dishait/pinia-plugin-unistorage","last_synced_at":"2025-05-06T05:32:15.532Z","repository":{"id":57676197,"uuid":"486851988","full_name":"dishait/pinia-plugin-unistorage","owner":"dishait","description":"uniapp 下 pinia 的本地数据缓存插件","archived":false,"fork":false,"pushed_at":"2024-07-17T07:12:29.000Z","size":585,"stargazers_count":20,"open_issues_count":4,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-04T11:49:57.386Z","etag":null,"topics":["pinia","pinia-plugin","storage","uniapp"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dishait.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-04-29T05:44:55.000Z","updated_at":"2025-04-08T18:56:46.000Z","dependencies_parsed_at":"2024-06-21T14:18:20.296Z","dependency_job_id":"b36e1956-0a2c-4f37-8619-7bff53754418","html_url":"https://github.com/dishait/pinia-plugin-unistorage","commit_stats":{"total_commits":19,"total_committers":1,"mean_commits":19.0,"dds":0.0,"last_synced_commit":"220b54e5285765f628854808c4cbdec0ca2589f0"},"previous_names":[],"tags_count":21,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dishait%2Fpinia-plugin-unistorage","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dishait%2Fpinia-plugin-unistorage/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dishait%2Fpinia-plugin-unistorage/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dishait%2Fpinia-plugin-unistorage/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dishait","download_url":"https://codeload.github.com/dishait/pinia-plugin-unistorage/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252629269,"owners_count":21779183,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["pinia","pinia-plugin","storage","uniapp"],"created_at":"2024-11-13T17:05:56.804Z","updated_at":"2025-05-06T05:32:14.965Z","avatar_url":"https://github.com/dishait.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n    \u003cimg width=\"200px\" height=\"200px\" src=\"https://gitee.com/dishait/pinia-plugin-unistorage/raw/main/static/favicon.png\" /\u003e\n    \u003ch1\u003epinia-plugin-unistorage\u003c/h1\u003e\n    \u003cp\u003euniapp 下 pinia 的本地数据缓存插件\u003c/p\u003e\n\u003c/div\u003e\n\n\u003cbr /\u003e\n\u003cbr /\u003e\n\n\u003cdiv align=\"center\"\u003e\n    \u003cimg width=\"100%\" height=\"100%\" src=\"https://gitee.com/dishait/pinia-plugin-unistorage/raw/main/static/pinia-plugin-unistorage.gif\" /\u003e\n\u003c/div\u003e\n\n\u003cbr /\u003e\n\u003cbr /\u003e\n\n## 引用\n\n该插件是\n[pinia-plugin-persistedstate](https://github.com/prazdevs/pinia-plugin-persistedstate)\n的 `uniapp` 版本，如果你需要在纯 `vue` 或者 `nuxt` 项目中使用 `pinia`\n的本地数据缓存，请使用\n[pinia-plugin-persistedstate](https://github.com/prazdevs/pinia-plugin-persistedstate)。\n\n\u003cbr /\u003e\n\u003cbr /\u003e\n\n## 动机\n\n为了实现多端的更简单的全局本地数据缓存\n\n\u003cbr /\u003e\n\u003cbr /\u003e\n\n## 组织 🦔\n\n欢迎关注 **帝莎编程**\n\n- [官网](http://dishaxy.dishait.cn/)\n- [Gitee](https://gitee.com/dishait)\n- [Github](https://github.com/dishait)\n- [网易云课堂](https://study.163.com/provider/480000001892585/index.htm?share=2\u0026shareId=480000001892585)\n\n\u003cbr /\u003e\n\u003cbr /\u003e\n\n## 使用\n\n### 安装\n\n#### 1. `cli` 创建的 `uniapp` 项目\n\n```shell\nnpm i pinia-plugin-unistorage -D\n```\n\n```js\n// main.js\nimport { createSSRApp } from \"vue\";\nimport * as Pinia from \"pinia\";\nimport { createUnistorage } from \"pinia-plugin-unistorage\";\n\nexport function createApp() {\n  const app = createSSRApp(App);\n\n  const store = Pinia.createPinia();\n\n  // 关键代码 👇\n  store.use(createUnistorage());\n\n  app.use(store);\n\n  return {\n    app,\n    Pinia, // 此处必须将 Pinia 返回\n  };\n}\n```\n\n\u003cbr /\u003e\n\n#### 2. `hbuilderx` 创建的 `uniapp` 项目\n\n👉 [直接插件市场安装](https://ext.dcloud.net.cn/plugin?id=8081) 后引入注册\n\n```js\n// main.js\nimport { createSSRApp } from \"vue\";\nimport * as Pinia from \"pinia\";\nimport { createUnistorage } from \"./uni_modules/pinia-plugin-unistorage\";\n\nexport function createApp() {\n  const app = createSSRApp(App);\n\n  const store = Pinia.createPinia();\n\n  // 关键代码 👇\n  store.use(createUnistorage());\n\n  app.use(store);\n\n  return {\n    app,\n    Pinia, // 此处必须将 Pinia 返回\n  };\n}\n```\n\n### 基础\n\n```js\nimport { defineStore } from \"pinia\";\n\nexport const useStore = defineStore(\"main\", {\n  state() {\n    return {\n      someState: \"hello pinia\",\n    };\n  },\n  unistorage: true, // 开启后对 state 的数据读写都将持久化\n});\n```\n\n或者 `setup` 语法也是支持的\n\n```js\nimport { defineStore } from \"pinia\";\n\nexport const useStore = defineStore(\n  \"main\",\n  () =\u003e {\n    const someState = ref(\"hello pinia\");\n    return { someState };\n  },\n  {\n    unistorage: true, // 开启后对 state 的数据读写都将持久化\n  },\n);\n```\n\n\u003cbr /\u003e\n\n### 选项\n\n#### 钩子\n\n```js\nimport { defineStore } from \"pinia\";\n\nexport const useStore = defineStore(\"main\", {\n  state() {\n    return {\n      someState: \"hello pinia\",\n    };\n  },\n  unistorage: {\n    // 初始化恢复前触发\n    beforeRestore(ctx) {},\n    // 初始化恢复后触发\n    afterRestore(ctx) {},\n  },\n});\n```\n\n\u003cbr /\u003e\n\n#### 序列化\n\n大多数情况下你并不需要了解该选项\n\n```js\nimport { defineStore } from \"pinia\";\n\nexport const useStore = defineStore(\"main\", {\n  state() {\n    return {\n      someState: \"hello pinia\",\n    };\n  },\n  unistorage: {\n    serializer: {\n      // 序列化，默认为 JSON.stringify\n      serialize(v) {\n        return JSON.stringify(v);\n      },\n      // 反序列化，默认为 JSON.parse\n      deserialize(v) {\n        return JSON.parse(v);\n      },\n    },\n  },\n});\n```\n\n\u003cbr /\u003e\n\n#### 其他\n\n```js\nimport { defineStore } from \"pinia\";\n\nexport const useStore = defineStore(\"main\", {\n  state() {\n    return {\n      foo: \"foo\",\n      nested: {\n        data: \"nested pinia\",\n      },\n      someState: \"hello pinia\",\n    };\n  },\n  unistorage: {\n    key: \"foo\", // 缓存的键，默认为该 store 的 id，这里是 main,\n    paths: [\"foo\", \"nested.data\"], // 需要缓存的路径，这里设置 foo 和 nested 下的 data 会被缓存\n  },\n});\n```\n\n\u003cbr /\u003e\n\u003cbr /\u003e\n\n## License\n\nMade with [markthree](https://github.com/markthree)\n\nPublished under [MIT License](./LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdishait%2Fpinia-plugin-unistorage","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdishait%2Fpinia-plugin-unistorage","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdishait%2Fpinia-plugin-unistorage/lists"}