2016-03-15 63 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指向转发的文件。