Angularjs Redux存储应为每个模块一个,或为包含多个Mudule的整个应用程序一个
我正在用Redux集成或重写Angular 1应用程序。它具有以下体系结构:Angularjs Redux存储应为每个模块一个,或为包含多个Mudule的整个应用程序一个,angularjs,redux,components,angular-redux,Angularjs,Redux,Components,Angular Redux,我正在用Redux集成或重写Angular 1应用程序。它具有以下体系结构: app1=>app1在diff子域上运行 app2=>app2在diff子域上运行 等等 共享=>共享模块(具有多个组件)b/w app1和app2 应用程序由多个特定模块组成 共享目录有一个或多个模块,在两个或多个应用程序之间共享 所以我的问题是我应该有应用程序级商店还是模块级商店 我所说的应用程序级商店和模块级商店是指,例如: 假设我们有一个共享模块SM1,它在两个应用程序之间共享 SM1在app1内部使用时应使
app1=>app1在diff子域上运行
app2=>app2在diff子域上运行
等等
共享=>共享模块(具有多个组件)b/w app1和app2
应用程序由多个特定模块组成共享目录有一个或多个模块,在两个或多个应用程序之间共享 所以我的问题是我应该有应用程序级商店还是模块级商店 我所说的应用程序级商店和模块级商店是指,例如:
SM1
,它在两个应用程序之间共享SM1
在app1
内部使用时应使用app1
的存储,在app2
内部使用时应使用app2
的存储。但是一个模块应该是一个自我维持的实体,它不应该依赖任何其他东西来存储SM1
可能有自己的商店,不与任何应用共享。但是当在app1
中使用SM1
时,其存储将与app1
的存储冲突ngRedux
依赖项,这些依赖项看起来有点冗余component1Store.dispatch({ type: 'INCREMENT'})
console.log('store state:', store.getState()) // { "component1": { "value": 2 }, "component2": { "value": 10 } }
console.log('component1Store state:', component1Store.getState()) // { "value": 2 }
console.log('component2Store state:', component2Store.getState()) // { "value": 10 }
component2Store.dispatch({ type: 'INCREMENT'})
console.log('store state:', store.getState()) // { "component1": { "value": 2 }, "component2": { "value": 10 } }
console.log('component1Store state:', component1Store.getState()) // { "value": 2 }
console.log('component2Store state:', component2Store.getState()) // { "value": 10 }
请注意,分配到component2Store
中的增量
操作没有更改component1Store
的状态。如果我们发送减量
操作,则情况正好相反
component1Store.dispatch({ type: 'DECREMENT'})
console.log('store state:', store.getState()) // { "component1": { "value": 2 }, "component2": { "value": 10 } }
console.log('component1Store state:', component1Store.getState()) // { "value": 2 }
console.log('component2Store state:', component2Store.getState()) // { "value": 10 }
component2Store.dispatch({ type: 'DECREMENT'})
console.log('store state:', store.getState()) // { "component1": { "value": 2 }, "component2": { "value": 9 } }
console.log('component1Store state:', component1Store.getState()) // { "value": 2 }
console.log('component2Store state:', component2Store.getState()) // { "value": 9 }
此时,您需要了解如何将这些子存储注入到共享组件中
希望这对你有用
免责声明:我是redux子空间的作者我会尽可能地支持松耦合:
- app1-自有商店(集成sm商店)
- app2-自有商店(集成sm商店)
- sm-自有商店
SM1
存储有一个已知的状态起点,因此app1
和app2
可以将SM1
缩减器组合到任意位置(例如不同的嵌套级别、不同的键等)。另一个优点是来自SM1
get名称空间的操作,因此它们不会与使用相同操作类型的操作的其他子模块发生任何串扰。随着每个应用程序的发展和越来越多的子模块(甚至子模块)的添加,这种隔离使得未来的维护更加容易。
component1Store.dispatch({ type: 'DECREMENT'})
console.log('store state:', store.getState()) // { "component1": { "value": 2 }, "component2": { "value": 10 } }
console.log('component1Store state:', component1Store.getState()) // { "value": 2 }
console.log('component2Store state:', component2Store.getState()) // { "value": 10 }
component2Store.dispatch({ type: 'DECREMENT'})
console.log('store state:', store.getState()) // { "component1": { "value": 2 }, "component2": { "value": 9 } }
console.log('component1Store state:', component1Store.getState()) // { "value": 2 }
console.log('component2Store state:', component2Store.getState()) // { "value": 9 }