软件包pipe理器:Bower vs jspm

Bower和jspm有什么不同? Bower可以提供有关SystemJS通用模块加载器的 jspmfunction吗?

那么JSPM比Bower要大得多,雄心​​勃勃。 Bower只有一个目的 – 将您需要的源文件从networking下载到您的硬盘。 对于你作为一个消费者,鲍尔不会做任何事情。 如果你想从鲍尔执行脚本文件,你需要为每个脚本创build脚本标记。

而jspm不仅是一个模块下载。 它默认下载你所提到的systemjs。 SystemJS尽可能地与https://whatwg.github.io/loader/实现。; 其实JSPM的作者是规范过程的非常积极的参与者。 有了systemjs,今天你就可以在浏览器中加载ES6(通过在浏览器中传输它们),CommonJS或者AMD模块,而无需构build它们。 不仅仅是ES6模块,还有traceur / babeljs / typescript支持的所有其他ES6function。 根据您在运行jspm init时select哪个编译器。 SystemJS可以在node.js和浏览器中以1:1的比例工作,因此unit testing是很容易的。

当你需要去生产的时候,它也可以为你build立捆绑( jspm build )。 所以很明显,jspm(+ systemjs)是一个更强大的工具。 所以作为一个经验法则:

  • 需要快速获取jQuery,并将其包含在您的服务器模板化的HTML? 去一个普通的脚本标签。 鲍尔已被弃用。
  • 需要build立大型的JS应用程序? 去用Webpack。 JSPM未能达到临界质量,现在每个人都在做webpack。

要添加到Capaj的答案:

如果你有一个小项目,无论如何去jspm! 这是未来! (谁知道,事情会改变,但这是一个很好的select)。

小项目使用:

 $ jspm install jquery 

那么在你的HTML中:

  <script src="jspm_packages/system.js"></script><!-- required --> <script src='config.js'></script><!-- required --> <script type="module"> System.import('path/to/your/main.js') </script> 

然后在main.js中:

 import $ from 'jquery'; // ES6-style import // do whatever with jQuery here. 

您可以使用CommonJS,AMD或ES 6模块格式。 JSPM在你的文件中自动检测到它们(尽pipe你不能在同一个文件中混合和匹配)。

 var $ = require('jquery'); // CommonJS-style import // do whatever with jQuery here. 
 define(['jquery'], function($) { // AMD-style import // do whatever with jQuery here. })