2016-09-25 104 views
3

在我的反应项目中,我一直在使用ES6模块。在我的反应成分,我会用进口:聚合物模块

import {f1,f2} from "./myLib"; 

在我的聚合物组分我使用脚本标签:

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

如果我没有记错,这是做两个完全不同的事情。脚本标记污染了我整个应用程序的全局名称空间。导入不是。

问题1:我的理解是否正确?

问题2:有没有办法在聚合物中得到类似的东西?我有几十个不同的聚合物组分。一些导入冲突的库。然后,如果我有一个使用多个组件的页面,就像我会得到哪个版本的JS脚本似乎是一个废话拍摄。

回答

0

在Polymer中使用ES6模块当然是可以的。首先你需要做的是分割模板和脚本。那么你可以去左右逢源

  1. 添加含transpiled ES6代码元素的HTML的脚本标签:

    <dom-module id="my-elem"></dom-module> 
    <script src="my-elem.js"></script> 
    
  2. 使用某种插件从ES6代码导入HTML。这是,例如,可能与此plugin为SystemJS

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

然后困难的部分,然后transpiling。我不确定其他模块加载器,但使用JSPM + SystemJS可以很容易地将其作为通用模块进行捆绑。通过这种方式,您的元素可以被<link rel="import" href="bower_components/my-elem/my-elem.html">使用,也可以从其他ES6代码导入。在前一种情况下,任何未捆绑的依赖关系都必须存在于全局范围内。但是,您可以将任何此类依赖关系放置在主HTML文件中。就像许多其他元素发布一样。

如果您愿意尝试使用JSPM + SystemJS,请查看blog post on my blog。我使用的是TypeScript,但对于ES6,通用解决方案应该大致相同。