Javascript 使用jspm和SystemJS基于DOM元素绑定模块

Javascript 使用jspm和SystemJS基于DOM元素绑定模块,javascript,systemjs,jspm,Javascript,Systemjs,Jspm,在浏览jspm和SystemJS文档和示例时,许多用例似乎只与绑定单页应用程序的JavaScript有关。这意味着只需一个或几个预设包就足够了 用例:多页网站 我希望为一个大型多页面网站整合ES2015模块和语法,该网站的页面具有一系列不同的依赖性 对于每个页面请求,我希望收集一个HTML属性列表,确定这些属性的相应模块,并创建一个仅包含页面所需的特定依赖项的捆绑包 其中一些页面可能需要jquery,而其他页面可能需要d3。单个入口点变成了一种模拟点,因为入口点可能会根据页面需要的模块而有所

在浏览jspm和SystemJS文档和示例时,许多用例似乎只与绑定单页应用程序的JavaScript有关。这意味着只需一个或几个预设包就足够了

用例:多页网站 我希望为一个大型多页面网站整合ES2015模块和语法,该网站的页面具有一系列不同的依赖性


对于每个页面请求,我希望收集一个HTML属性列表,确定这些属性的相应模块,并创建一个仅包含页面所需的特定依赖项的捆绑包


其中一些页面可能需要
jquery
,而其他页面可能需要
d3
。单个入口点变成了一种模拟点,因为入口点可能会根据页面需要的模块而有所不同

收集页面所需模块的列表非常简单,但我不清楚如何动态生成包含大量可能依赖项的捆绑文件。我已经读了好几遍了,但是发现它缺少一些与我的特定实现(例如,depCache、bundle sfx)可能(也可能不是)至关重要的功能相关的实际示例

捆绑生产 我尝试捆绑生产所需的特定模块时,首先使用
System.import()
加载需要加载的所有模块的列表,然后使用
中的承诺,然后使用
回调只导入这些特定模块

index.html

<script>
  System.import('/src/js/initr.config.js').then(function(m) {
    m.modulesToImport.forEach(function(m) {
        return System.import(m);
    });
  });
</script>
显然,这个捆绑包不能充分编译我的代码,因为它只包含
src/main
的内容,而不是从内部导入的模块

这表明我的入口点必须由es2015、commonjs等导入语句组成,而不仅仅是
System.import()
。但是这些模块导入语句确实支持动态加载。更具体地说,如果我将上面的
System.import(m)
替换为
import m
,文件将出错


要问一个单数的、有针对性的问题:

是否可以使用
jspm
SystemJS
为多页面网站上的大量模块组合创建动态生成的捆绑包?由于这些捆绑包可能由数百个绑定到DOM元素的不同模块组合组成,因此无法对这些捆绑包进行预设或预先确定。

如果有帮助,您可以查看此项目的

System.registerDynamic("src/main.js", [], false, function($__require, $__exports, $__module) {
  var _retrieveGlobal = System.get("@@global-helpers").prepareGlobal($__module.id, null, null);
  (function() {
    System.import('/src/js/initr.config.js').then(function(m) {
      m.modulesToImport.forEach(function(m) {
        return System.import(m);
      });
    });
  })();
  return _retrieveGlobal();
});