如何将AMD模块导入Polymer自定义元素?

时间:2016-12-15 13:46:45

标签: requirejs polymer polymer-1.0 amd

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

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

1 个答案:

答案 0 :(得分:0)

来自Polymer团队的Justin Fagnani:

“听起来像你需要一个与Polymer / HTML Imports一起使用的模块加载器/注册表。我做了一个名为IMD的事情:https://github.com/PolymerLabs/IMD

它只是一个符合AMD标准的模块注册表,但不是加载器,因此所有模块都必须通过显式或标记加载,这样可以确保依赖顺序得以保留。“

它完全符合我的要求。