2016-03-15 80 views
8

我希望能夠使用System.import()異步加載依賴關係,但無需在生產運行時將ES6轉換爲ES5。我希望將這些模塊轉換爲單獨的,僅在需要時才提取的ES5模塊。我不希望他們成爲主要捆綁的一部分。使用SystemJS/jspm加載異步,生產中的es5模塊

開發流程

這些模塊是我的生產建設這實際上是令人擔憂的,因爲我不希望包括允許transpilation任何依賴期間有效地加載。

我有一個工作流程,我使用jspm bundlejspm unbundle在開發和生產配置之間切換。在我的開發環境,我包括以下腳本:

<script src="jspm_packages/system.js"></script> 
<script src="config.js"></script> 

<script> 
    System.import('src/main'); 
</script> 

製作流程

在生產中,我使用jspm bundle --injectbundles選項注入System.config。這實際上只會加載必要的文件:

system.js 
config.js 
main.bundle.js 

當我嘗試用System.import()生產過程中異步加載模塊,它加載罰款,這意味着transpilation在瀏覽器中生產過程中發生的事情。


問題

  1. 我可以輕鬆地構建我的每一個模塊到AMD,但我怎麼能仍然 異步並分別使用System.import()獲取它們?

  2. 我也想確保包含儘可能少的瀏覽器開銷作爲 可能,這意味着不包括執行 轉換的任何腳本。有沒有一種方法可以包含system.js,而不是 有轉儲功能?

回答

0
回答

System.import()用於裝載模塊。模塊是必不可少的.js文件,用於導出諸如函數或Object或Class之類的東西。

如果你組織你的代碼放入單獨的文件,那麼你可以將它們無論是在使用另一個文件的頭..

import * as YM from 'YourModuleFile'; 

這將使YM在整個文件進行訪問。

或者,如果你想裝YM上點擊一個按鈕,而不是..

element.onclick = function() { 
    System.import('YourModuleFile').then(function(YM) { 
     // YM accessible here 
    }) 
} 

所以最重要的事情變成組織代碼以及裏面的文件/模塊。

然後,您可以使用一個NPM任務運行如一飲而盡壓縮文件等

當然,你將需要輸入一些映射裏面你systemjs.config.js文件等..

​​3210

因此,SystemJS可以找到它。

答案2

JSPM有tranpile能力,我不知道SystemJS沒有。

確保JSPM(或您選擇的工具)傳輸您的文件。然後將SystemJS指向轉發的文件。