2016-09-25 185 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,通用解決方案應該大致相同。