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