2017-10-15 92 views
0

我是jspm的新手。我有requrieJs背景。JSPM bundle vs requireJs混淆

jspm绑定编译所有依赖到一个大文件是不是真的?像jquery,jquery-ui,bootstrap,数据库到其他50个项目中使用的项目?

如果是,那么有什么好处?如果需要像requrieJs那样获取物品,它会不会更快?

回答

2

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

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

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

+0

Thankx。我有更多的问题 (1)如果我使用http/2服务器,我不需要捆绑,它的工作方式就像requirejs?对 ? (2)我可以在DOM中看到导入的js css文件吗? – django

+0

1)不,你可以跳过捆绑,但我建议检查性能是否足够好2)afaik否,但你会看到什么已加载在开发人员工具 –

+0

的网络选项卡好吧,我明白了。如果我想跳过捆绑,我需要一个咕task任务来缩小项目中的所有js css文件,甚至用'''jspm install''''''''''''''' JSPM可以实现缩小但不捆绑的方式吗? – django