Polymer 如何利用100+;元素

Polymer 如何利用100+;元素,polymer,polymer-1.0,polymer-starter-kit,Polymer,Polymer 1.0,Polymer Starter Kit,这是启动聚合物项目的良好参考。您只需将所有元素放入app/elements文件夹。这对于中小型项目来说非常有效 当您有超过30个元素时,它会变得混乱。然后,您需要将扁平的元素文件夹重构为一个更深层次的文件夹结构,如下所示: -元素 --my-module-1 ---my-element-1-1 ---my-element-1-2 --my-module-2 ---my-submodule-2-1 ----my-element-2-1-1 ----my-element-2-1-2 ---my-su

这是启动聚合物项目的良好参考。您只需将所有元素放入
app/elements
文件夹。这对于中小型项目来说非常有效

当您有超过30个元素时,它会变得混乱。然后,您需要将扁平的
元素
文件夹重构为一个更深层次的文件夹结构,如下所示:

-元素
--my-module-1
---my-element-1-1
---my-element-1-2
--my-module-2
---my-submodule-2-1
----my-element-2-1-1
----my-element-2-1-2
---my-submodule-2-2
---- ...

有几个问题:

  • 当您想要演示和测试子模块时,您需要导入每个元素定义之上的所有依赖项
  • 你打破了“所有元素都是兄弟”的模式
  • 您的相对路径变得混乱(大量的
    。/../../../my-module-x/my-module-y
  • 你要么有很多路径,比如
    。/../../../../bower\u components
    ,要么使用
    /bower\u components
    ,然后你需要在你的开发服务器中有一个重定向,绝对路径会把你搞得一团糟
  • 每个元素都有一个演示和测试文件夹,目录结构增长非常快
下面是一个描述问题并指出两种解决方案的示例:

  • 独立元素存储库
  • 构建可重用元素
单独的元素存储库,如工程中的30个元素,但一旦您达到100多个元素,就会遇到相同的问题

首先,构建可重用元素似乎是个好主意,因为您可以很好地封装所有内容。但是,处理数百份回购协议是痛苦的,当你想在回购协议中包含多个单一元素时,标准模式就会中断

所以我想知道,在如何构建大型聚合物应用程序方面有哪些好的实践? 有没有超过30个元素的项目的例子

对于包含多个元素的可重用元素repo,有哪些良好实践

多个入口点的良好结构是什么


总的来说:如何扩展聚合物项目

考虑文件结构和url结构之间的差异对您的问题很有用。使web服务器将文件映射到同一位置。这就是polyserve所做的,您可以将wct配置为像它一样设置其服务器

因此,例如,当您创建单个要测试的元素时,它通常直接位于项目目录中,但web服务器将此父元素直接映射到/components中。它对bower_组件也有同样的作用,因此它们在浏览器级别上显示在同一位置。这就是为什么像../polymer/polymer.html这样的引用可以工作的原因

我在想,在您上面提出的场景中,您在每个子模块级别重复执行类似的操作,以便每个元素都可以引用polymer,或其位于
。/polymer/polymer.html

最终的结果是整个项目的“URL”结构

-components (elements mapped to this as well as bower_components) 

--mymodule1 
---(mapped so all directories under bower_components are mapped in here)

---myelement1.1
---myelement1.2

--mymodule2
---(mapped so all directories under bower_components are mapped in here)
---myelement2.1
---myslement2,2

IMO组织聚合物元素的关键在于设计问题/页面的解决方案。考虑为特定型号设计乐高积木。是的,您可以构建许多具有非常特定功能的部件,但最好专注于可重用性,设计较少的部件来覆盖大部分结构(基本元素),然后添加一些修补部件(修补元素)来完成模型。基本元素应该简单且非常通用

虽然润色元素不太可能被回收,但它们可以留在页面上。另一方面,基本元素应该放在一个非常靠近根目录的文件夹中,并且具有非常描述性的名称。随着开发的进行,新基本元素的使用率将降低,开发新页面所需的时间也将减少


如果设计是正确的,那么如何对图元进行分类并不重要,只要将它们放置在“bower_components”文件夹中,除非您正在构建公共聚合物图元。bower_组件中的所有内容都应由bower.json控制,因此您将删除整个文件夹,并使用
bower install
重新填充它

我们有一个提供100种元素的生产应用程序。我们发现,将文件夹中的多个元素分组以减少回购和文件夹的数量非常有用。我们仍然使所有元素成为兄弟

这在谷歌自身的元素中有一点先例。如果您查看应用程序布局和polymerfire,它们都包含多个自定义元素


思想的转变是要记住,不是每个元素都应该存在于它自己的目录中。

对当前问题没有任何帮助。但是我看了一些Polymario视频,他们谈到了简化包含依赖项的使用的计划(可能自动导入所需的依赖项?)。换句话说,即使这对你来说是个问题,但在“不久”的将来可能会容易得多你可能是说?“Magic服务器直接从github提供文件”。它使拥有多个回购变得更容易一些(因为您不需要在每次更改后进行
bower更新
),但是如果您遵循标准的可重用元素方法,您仍然需要提交100个回购……这仍然会搞砸vulcanize@OlivierLangelaar我必须承认我已经不再担心硫化了,因为我使用http/2并将所有组件作为单独的负载。也有助于我延迟加载(请参见最后一个polycast)