Web 聚合物应用程序最佳实践

Web 聚合物应用程序最佳实践,web,polymer,polymer-1.0,web-component,polymerfire,Web,Polymer,Polymer 1.0,Web Component,Polymerfire,在开发Polymer Web应用程序时,我需要尊重最佳实践问题 假设我有一个待办事项应用程序。主元素我的主任务负责在这些元素之间切换:列出所有任务,查看单个任务,新建任务,编辑任务和删除任务 我的问题是:新的元素必须单独使用firebase文档或iron ajax保存数据,或者将其委托给我的主要任务?在最近的聚合物峰会(伦敦2016年)上,有很多关于懒惰的言论(比如懒惰加载)。这意味着,您只加载/渲染所需内容,而(在最佳情况下)不加载其他内容 也就是说,您的问题的简短答案是:新的元素应该自己保存

在开发Polymer Web应用程序时,我需要尊重最佳实践问题

假设我有一个待办事项应用程序。主元素
我的主任务
负责在这些元素之间切换:
列出
所有任务,
查看
单个任务,
新建
任务,
编辑
任务和
删除
任务


我的问题是:
新的
元素必须单独使用
firebase文档
iron ajax
保存数据,或者将其委托给
我的主要任务

在最近的聚合物峰会(伦敦2016年)上,有很多关于懒惰的言论(比如懒惰加载)。这意味着,您只加载/渲染所需内容,而(在最佳情况下)不加载其他内容

也就是说,您的问题的简短答案是:新的
元素应该自己保存数据,因为它是保存数据最合适的地方

至于冗长的回答,请耐心听我说一会儿

在页面上,实际上有一个名为的架构模式。此模式实际上描述了您的
my main task
元素

一些有用的引语:

应用程序“shell”是支持用户界面所需的最小HTML、CSS和JavaScript//

/…/一般来说,您的应用程序应该加载尽可能简单的shell,但在初始下载时应包含足够有意义的页面内容

尽管如此,将保存新项目的逻辑放在appshell元素(在您的例子中是
mymaintalstask
元素)中是不明智的

更进一步,让我们看看聚合物的样品(,)

如果查看“app shell”元素
shop app
(),您可以看到它只实现以下功能:

  • 基本页面布局(侧栏、内容)
  • 路由
  • 购物车数据
  • 购物车逻辑
在这种特殊情况下,购物车数据和逻辑被放入shell元素中,因为它在所有页面中都使用,但在其他情况下,没有其他业务逻辑在那里实现

<>强>对于你的问题< /强>的长回答,让我们看看结帐页面,即<代码>商店签出< /Cord>元素()。您可以看到,所有与表单相关的数据(即发布到服务器)都是在这个元素中完成的,并且没有任何内容被委托给appshell元素

另一个例子是
shop list
元素()。同样,您可以看到该元素自己检索数据,并且仅与appshell元素交互以更改节

最后,让我们举出上述Shop应用程序中也包含的另一个良好实践,即应用程序中的数据流动方式。在Polymer Summit()上有一个关于这一点的有趣的讨论,其实质是:尽可能多地使用单向数据绑定,除非真的需要,否则尽量避免双向数据绑定。为了实现这一点,向下的数据流(父到子)应该作为单向数据绑定来完成,而向上的数据流(子到父)应该作为事件来完成。这对于元素的可重用性至关重要,因为元素之间的耦合要低得多