Javascript 聚合2.0:我应该将业务逻辑放在哪里?
我从聚合物2.0开始,我有一个设计问题,我找不到答案,希望你们能帮助我 关键是我正在开发一个任务管理器系统,它使用一个外部api(本例中为laravel)来启动/停止任务、编辑或创建一个新任务,等等 我找不到处理业务特定逻辑的最佳方法,因为据我所知,聚合元素应该是可重用的,在聚合元素中包含api调用和其他功能似乎不是最好的解决方案,尽管这是最简单的 我有几种选择:Javascript 聚合2.0:我应该将业务逻辑放在哪里?,javascript,design-patterns,polymer-2.x,Javascript,Design Patterns,Polymer 2.x,我从聚合物2.0开始,我有一个设计问题,我找不到答案,希望你们能帮助我 关键是我正在开发一个任务管理器系统,它使用一个外部api(本例中为laravel)来启动/停止任务、编辑或创建一个新任务,等等 我找不到处理业务特定逻辑的最佳方法,因为据我所知,聚合元素应该是可重用的,在聚合元素中包含api调用和其他功能似乎不是最好的解决方案,尽管这是最简单的 我有几种选择: 使用顶级JS类中的自定义事件管理所有内容,该类调用api并更新聚合元素 使用mixin从Polymer元素和包含所需方法/逻辑的自
- 使用顶级JS类中的自定义事件管理所有内容,该类调用api并更新聚合元素
- 使用mixin从Polymer元素和包含所需方法/逻辑的自定义任务类进行扩展
- 将任务对象传递给聚合元素,并将其另存为属性,然后通过它调用该方法
谢谢大家! 有几种方法 1)使用标签读取和修改数据(实时数据库)
//firebase示例
您可以使用它访问{{data}}并修改它。因此,如果删除笔记,它将在服务器上和每一个其他连接的客户端上自动删除(这是一项类似firebase的live db功能)
=>见
据我所知,您将使用php为数据创建api,对吗?因此,一个实时数据库是不可能的。所以
2)使用标签读取(和修改)数据
最好的办法可能是为你需要的东西创建一个数据提供者
e、 g
因此,您仍然可以轻松访问{{notes}}和{{comments}}
您处理更新的方式取决于您的用例。例如,您可以在数据处理程序中使用changeEvents,通过fetch或iron ajax动态地进行api更新
或者,您可以使用表单执行“普通”post请求,并触发数据提供程序获取新数据
我个人喜欢完全封装我的数据,所以我不必考虑它。例如,数据是如何以及从何而来的我不在乎:p
数据源示例:
- 静态:组件本身内部的json =>
- 子元素:例如,使用iron ajax从json api实际加载数据
- fetch:使用fetch加载数据、处理数据并存储数据以供使用
- 浏览器存储:使用html5本地存储或indexedDB(可能用于临时数据?)=>
// firebase example
<firebase-query
id="query"
app-name="notes"
path="/notes/[[uid]]"
data="{{data}}">
</firebase-query>
<template is="dom-repeat" items="{{data}}" as="note">
<sticky-note note-data="{{note}}"></sticky-note>
</template>
<data-notes notes="{{notes}}"></notes>
<data-comments comments="{{comments}}" for="[[currentNote]]"></notes>