Polymer 聚合物中的模块

Polymer 聚合物中的模块,polymer,Polymer,在我的react项目中,我已经使用ES6模块一段时间了。在我的react组件中,我将使用导入: import {f1,f2} from "./myLib"; 在我的聚合物组件中,我使用脚本标记: <script src="./myLib.js"></script> 如果我没弄错的话,它们在做两件完全不同的事情。脚本标记正在污染整个应用程序的全局命名空间。进口不是 问题1:我对这一点的理解正确吗 问题2:有没有办法在聚合物中得到类似的东西 我有几十种不同的聚合物成分

在我的react项目中,我已经使用ES6模块一段时间了。在我的react组件中,我将使用导入:

import {f1,f2} from "./myLib";
在我的聚合物组件中,我使用脚本标记:

<script src="./myLib.js"></script>

如果我没弄错的话,它们在做两件完全不同的事情。脚本标记正在污染整个应用程序的全局命名空间。进口不是

问题1:我对这一点的理解正确吗

问题2:有没有办法在聚合物中得到类似的东西


我有几十种不同的聚合物成分。一些导入冲突的库。然后,如果我有一个使用多个组件的页面,那么对于我将获得哪个版本的JS脚本,这似乎是一个废话。

当然可以将ES6模块与Polymer一起使用。首先要做的是拆分模板和脚本。然后你可以走两条路

  • 将包含已传输ES6代码的脚本标记添加到元素的html中:

    <dom-module id="my-elem"></dom-module>
    <script src="my-elem.js"></script>
    
  • 然后,最困难的部分就是传输。我不确定是否有其他模块加载器,但使用JSPM+SystemJS,可以很容易地将其打包为通用模块。这样,您的元素既可供
    使用,也可用于从其他ES6代码导入。在前一种情况下,任何未捆绑的依赖项都必须存在于全局范围内。但是,您可以在主html文件中放置任何此类依赖项。就像许多其他元素被发布一样

    如果你愿意尝试一下JSPM+SystemJS,请看一看。我使用的是TypeScript,但对于ES6,一般的解决方案应该大致相同

    import './my-elem.html!';
    
    class MyElem extends HTMLElement {}
    
    document.registerElement('my-elem', MyElem);