JSPM 包与 requireJs 混淆

JSPM bundle vs requireJs confusion

我是 jspm 新手。我有requrieJs背景。

jspm 打包时将所有依赖项编译成一个大文件是真的吗?像 jquery、jquery-ui、bootstrap、项目中使用的其他 50 plguins 的数据库 ?

如果是,那么好处是什么?当 required 像 requrieJs 那样获取项目时,获取项目不会快得多吗?

默认情况下,jspm 不会捆绑您的依赖项。每个依赖项都是自己导入的。所以如果你有三个文件,比如 main.js、smth.js 和 jquery.js,一旦调用 System.import,jspm 就会一个一个地请求它们。对于静态依赖项(如 ES6 模块),它发生在代码执行之前。但是您也可以在运行时需要额外的模块。

背后的想法是 HTTP/2 并不真正需要捆绑。 jspm 知道整个依赖关系树,它可以并行请求所有依赖关系。然后所有文件将通过相同的网络连接传送,这应该与您在构建时捆绑它们完全相同。

但是由于 HTTP/1 仍然很常见,jspm 提供了 bundle & build CLI。但是这些命令默认情况下只会将所有内容放在一个大文件中。该过程是高度可配置的。您可以排除某些依赖项,例如 jquery 并将它们放在单独的包中,甚至可以从 CDN 加载 jquery。有关 exclude/include 模块的更多信息,请参阅 https://jspm.io/docs/production-workflows.html#creating-a-bundle