2016-12-15 71 views
0

我正在将现有的Web应用程序转换为Polymer。 Web应用程序由组件(在Knockout组件体系结构中)和模块组成。两者都使用RequireJS加载。我看到如何将Knockout组件转换为Polymer自定义元素,但不知道如何处理JavaScript模块。 RequireJS模块返回一个JavaScript对象,该对象通过参数传递给依赖于它的JavaScript到“define”函数。如果模块代码是通过HTML导入而不是RequireJS加载的,似乎没有办法获得该对象。如何将AMD模块导入Polymer自定义元素?

例如,若干现有组件使用moment.js模块进行日期/时间操作。他们通过RequireJS加载它,它向它传递了对象的引用。在其中一篇Polycast视频中,Rob Dobson表示,推荐的做法是编写一个moment.html文件,其中包含<script>标签以导入moment.js。然后,聚合物自定义元素可以执行moment.html的HTML导入,但这不会使组件访问由moment.js模块返回的对象。 Moment不会将该对象放入全局名称空间,那么Polymer自定义元素如何访问该时刻对象?

+0

我使用聚合物的“时刻”。您唯一需要做的就是使用源代码导入脚本,然后您可以直接在您的ploymer函数中使用它,如'moment(date).format('D MMM YYYY')' – a1626

+0

这个时刻的使用已被废弃。使用它会在控制台中产生以下消息:“弃用警告:不推荐使用通过全局作用域访问Moment,并且将在即将发布的版本中删除它。”重点在于应用程序中的模块不会将任何内容放入全局名称空间,而是通过RequireJS“define”函数将引用传递给相关组件。 –

+0

你做了一个凉亭安装的时刻? – a1626

回答

0

这从聚合物队的贾斯汀Fagnani:像你需要一个模块加载/注册表与聚合物/ HTML进口工作

“听起来我在这里做了这样叫IMD一件事:https://github.com/PolymerLabs/IMD

这是只有符合AMD标准的模块注册表,而不是加载器,因此所有模块都必须通过显式或标签进行加载,从而确保依赖性排序得以保留。“

它正是我所期待的。

相关问题