Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用SystemJS/jspm在生产中加载异步es5模块_Javascript_Systemjs_Jspm - Fatal编程技术网

Javascript 使用SystemJS/jspm在生产中加载异步es5模块

Javascript 使用SystemJS/jspm在生产中加载异步es5模块,javascript,systemjs,jspm,Javascript,Systemjs,Jspm,我希望能够使用System.import()异步加载依赖项,但不必在生产运行时将ES6传输到ES5。我希望这些模块被传输到单独的ES5模块中,这些模块只在需要时才被获取。我不想让它们成为主捆绑包的一部分 开发工作流程 这些模块在我的生产构建期间有效地加载,这实际上令人担忧,因为我不想包含任何允许透明化的依赖项 我有一个工作流程,使用jspmbundle和jspmunbundle在开发和生产配置之间切换。在我的开发环境中,我包括以下脚本: <script src="jspm_packages

我希望能够使用
System.import()
异步加载依赖项,但不必在生产运行时将ES6传输到ES5。我希望这些模块被传输到单独的ES5模块中,这些模块只在需要时才被获取。我不想让它们成为主捆绑包的一部分

开发工作流程

这些模块在我的生产构建期间有效地加载,这实际上令人担忧,因为我不想包含任何允许透明化的依赖项

我有一个工作流程,使用
jspmbundle
jspmunbundle
在开发和生产配置之间切换。在我的开发环境中,我包括以下脚本:

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

<script>
    System.import('src/main');
</script>
在生产过程中,当我尝试使用
System.import()
异步加载模块时,该模块加载良好,这意味着在生产过程中浏览器中正在进行传输


问题

  • 我可以很容易地将我的每个模块构建到AMD中,但我怎么还能继续呢 使用
    System.import()
    异步并单独获取它们

  • 我还想确保尽可能少地包含浏览器开销 可能,这意味着不包括任何执行 发丝。有没有一种方法可以包含不需要的
    system.js
    有传输能力吗

  • 答复1

    System.import()用于加载模块。模块是导出函数、对象或类等内容的基本.js文件

    如果将代码组织到单独的文件中,则可以使用..将它们加载到另一个文件的头中

    import * as YM from 'YourModuleFile';
    
    这将使YM可以在整个文件中访问

    或者,如果您想在按钮上加载YM,请单击

    element.onclick = function() {
        System.import('YourModuleFile').then(function(YM) {
            // YM accessible here
        })
    }
    
    因此,重要的是在文件/模块中很好地组织代码

    然后,您可以使用npm任务运行程序(如gulp)来压缩文件等

    当然,您需要在systemjs.config.js文件中输入一些映射,例如

    'YourModuleFile': '/path/to/your/module/file.js'
    
    以便SystemJS能够找到它

    答复2

    JSPM有tranpile功能,我不确定SystemJS是否有

    确保JSPM(或您选择的工具)传输您的文件。然后将SystemJS指向传输的文件

    'YourModuleFile': '/path/to/your/module/file.js'