我正在将现有的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自定义元素如何访问时刻对象?
答案 0 :(得分:0)
来自Polymer团队的Justin Fagnani:
“听起来像你需要一个与Polymer / HTML Imports一起使用的模块加载器/注册表。我做了一个名为IMD的事情:https://github.com/PolymerLabs/IMD
它只是一个符合AMD标准的模块注册表,但不是加载器,因此所有模块都必须通过显式或标记加载,这样可以确保依赖顺序得以保留。“
它完全符合我的要求。