这里给出一些store的建议,同样它们对架构没有任何影响,读者可以自行斟酌是否采用。
以实体为颗粒度
store应该无逻辑,只是简单的增删改查。
在本架构下,业务逻辑在领域层,编排和时序控制在应用层,因此store无需包含复杂逻辑,只是简单的增删改查即可,这也有助于隔离具体技术栈。store充当前端的数据库,而不是redux一样的业务和数据的综合体。
store应该范式化
这是一个redux社区的通用做法,把数组转换成以id为ey的对象,好处是增删改查 都比较方便,直接通过key获取,不用find,性能也更高。不过现在js有了Map类型,建议用Map,因为object限定key必须为字符串,而id大多都是数字,而且object没有删除元素的最佳做法(设为undefined和delete有自身的问题)。
import { Todo } from 'todo/models/todo'import { Store } from 'todo/app/port'export default <Store>{todos: new Map(),add(todo: Todo) {this.todos.set(todo.id, todo)},del(id: number) {this.todos.delete(id)},set(todo: Todo) {this.todos.set(todo.id, todo)}}
