{"_id":"@cuberqaq/zeppos-reactive","name":"@cuberqaq/zeppos-reactive","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@cuberqaq/zeppos-reactive","version":"1.0.0","description":"轻量响应式系统，适用于 Zepp OS / 受限运行环境","author":{"name":"CuberQAQ"},"license":"MIT","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"build":"tsc","watch":"tsc --watch"},"devDependencies":{"typescript":"^5.9.3"},"keywords":["zepp","zeppos","reactive","solid","proxy"],"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_id":"@cuberqaq/zeppos-reactive@1.0.0","gitHead":"760822d88bd4048931857ff3a05ee0fa0aabb7f3","_nodeVersion":"22.20.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-EEjyZOBe+dKNbtAyhWE040NH+Rn1u3IZo8ScrC16/4WWn+lQSr28RHOc4q+ktEZ6uDVMbEQsY7w9ZEJulMfuWw==","shasum":"0e3a7642026e0a6740ea0877a20a4124e4dc619f","tarball":"https://registry.npmjs.org/@cuberqaq/zeppos-reactive/-/zeppos-reactive-1.0.0.tgz","fileCount":5,"unpackedSize":28466,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDAxcZ/vd3NENm2DNf1caa2Fz3Bf7FDkuSqx2UzZYsnNwIgaohvzAkPJHNZv0FgeX9n1tNyFjMeoVnVqV2CTseWccg="}]},"_npmUser":{"name":"cuberqaq","email":"a224503353@163.com"},"directories":{},"maintainers":[{"name":"cuberqaq","email":"a224503353@163.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/zeppos-reactive_1.0.0_1782146865446_0.47927491569064373"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-22T16:47:44.677Z","1.0.0":"2026-06-22T16:47:45.601Z","modified":"2026-06-22T16:47:45.825Z"},"maintainers":[{"name":"cuberqaq","email":"a224503353@163.com"}],"description":"轻量响应式系统，适用于 Zepp OS / 受限运行环境","keywords":["zepp","zeppos","reactive","solid","proxy"],"author":{"name":"CuberQAQ"},"license":"MIT","readme":"## @x1a0ma17x/zeppos-reactive\r\n\r\n一个极轻量、零依赖、适用于 ZeppOS / 小程序 / 受限环境的响应式系统。\r\n\r\n\r\n- ✅ reactive() —— 深度响应式对象\r\n\r\n- ✅ effect() —— 自动依赖收集 & 响应式副作用\r\n\r\n- ✅ computed() —— 具备缓存的计算属性（推 + 拉混合模型）\r\n\r\n- ✅ 无 Proxy polyfill 依赖\r\n\r\n- ✅ 无 effect 栈、无 scheduler 的极简实现\r\n\r\n- ✅ 适合 ZeppOS、IoT、小程序等受限运行环境\r\n\r\n### 📦 安装\r\n\r\n```bash\r\nnpm install @x1a0ma17x/zeppos-reactive\r\n```\r\n\r\n或使用 pnpm：\r\n\r\n```bash\r\npnpm add @x1a0ma17x/zeppos-reactive\r\n```\r\n\r\n### 🚀 快速开始\r\n\r\n```js\r\nimport { reactive, effect, computed } from \"@x1a0ma17x/zeppos-reactive\";\r\n\r\nconst state = reactive({\r\n  count: 1,\r\n  nested: { value: 10 }\r\n});\r\n\r\neffect(() => {\r\n  console.log(\"count changed:\", state.count);\r\n});\r\n\r\nstate.count++; // 自动触发 effect\r\n```\r\n\r\n### 📘 API 文档\r\n\r\n#### 1. reactive()\r\n\r\n创建一个深度响应式对象。\r\n\r\n```js\r\nconst obj = reactive({ a: 1, b: { c: 2 } });\r\n```\r\n\r\n##### 特点：\r\n\r\n- ✅ 深度代理（嵌套对象自动 reactive）\r\n\r\n- ✅ 访问属性时自动 track\r\n\r\n- ✅ 修改属性时自动 trigger\r\n\r\n- ✅ 不会重复代理同一个对象\r\n\r\n##### 示例：\r\n\r\n```js\r\nconst state = reactive({\r\n  count: 0,\r\n  nested: { value: 100 }\r\n});\r\n\r\neffect(() => {\r\n  console.log(\"nested.value =\", state.nested.value);\r\n});\r\n\r\nstate.nested.value = 200; // 自动触发 effect\r\n```\r\n\r\n#### 2. effect()\r\n\r\n注册一个副作用函数，当其依赖的响应式数据变化时自动重新执行。\r\n\r\n```js\r\neffect(() => {\r\n  console.log(\"count is\", state.count);\r\n});\r\n```\r\n\r\n##### 特点：\r\n\r\n- ✅ 自动依赖收集\r\n\r\n- ✅ 支持嵌套 effect\r\n\r\n- ✅ 支持动态依赖切换\r\n\r\n- ✅ 调用栈即 effect 栈，无需额外维护\r\n\r\n##### 示例：动态依赖切换\r\n\r\n```js\r\nconst state = reactive({ flag: true, a: 1, b: 2 });\r\n\r\neffect(() => {\r\n  console.log(state.flag ? state.a : state.b);\r\n});\r\n\r\nstate.flag = false; // effect 自动切换依赖到 state.b\r\nstate.b = 100;      // 触发 effect\r\n```\r\n\r\n#### 3. computed()\r\n\r\n创建一个具备缓存的计算属性。\r\n\r\n```js\r\nconst double = computed(() => state.count * 2);\r\n\r\nconsole.log(double.value); // 2\r\nstate.count++;\r\nconsole.log(double.value); // 4\r\n```\r\n\r\n##### 特点：\r\n\r\n- ✅ 首次访问时计算\r\n\r\n- ✅ 缓存结果\r\n\r\n- ✅ 依赖变化时自动更新\r\n\r\n- ✅ 只有在被 effect 依赖时才会主动触发更新（推式）\r\n\r\n- ✅ 在非 effect 中访问时按需重新计算（拉式）\r\n\r\n##### 示例：computed 依赖 effect\r\n\r\n```js\r\nconst sum = computed(() => state.a + state.b);\r\n\r\neffect(() => {\r\n  console.log(\"sum =\", sum.value);\r\n});\r\n\r\nstate.a = 10; // 自动触发 effect\r\n```\r\n","readmeFilename":"README.md","_rev":"1-a6a736e2977a918f215de0c007944fd4"}