软件包管理器:Bower vs jspm


Answers:


100

JSPM比Bower更大,更宏大。Bower仅有一个用途-从Web将所需的源文件下载到硬盘。对于作为消费者的您来说,凉亭无能为力。如果要从Bower执行脚本文件,则需要为每个脚本文件创建脚本标签。

虽然jspm不仅是模块下载器。默认情况下,它会下载您提到的systemjs。SystemJS的实现尽可能接近https://whatwg.github.io/loader/。实际上,JSPM的作者是规范过程的非常积极的参与者。如今,借助systemjs,您无需构建ES6(通过在浏览器中编译它们),CommonJS或AMD模块即可加载它们。不仅是ES6模块,而且traceur / babeljs / typescript支持的所有其他ES6功能。取决于运行时选择的编译器jspm init。SystemJS在node.js和浏览器中均以1:1的方式运行,因此可以轻松完成应用程序的单元测试。

jspm build当您需要投入生产时,它也可以为您()构建捆绑包。因此,显然jspm(+ systemjs)是一个更强大的工具。因此,根据经验:

  • 需要快速获取jquery并将其包含在服务器端模板html中?使用常规脚本标签。Bower已弃用。
  • 需要构建大型JS应用?使用Webpack。JSPM未能达到临界质量,现在每个人都在做Webpack。

为了更精确一点,SystemJS本身使用ES6模块填充程序,因此,如果您仅需要ES6模块支持,则可以跳过SJS(除非您想要它具有的其他功能)。
ShawnFumo 2015年

@Capaj,我对SystemJS很感兴趣,但似乎没有它应有的动力。其他一些(也许是Webpack吗?)是否也将构建作为可选功能提供?我的主要目标是使用ES6模块语法以及填充节点和浏览器来处理它。次要目标:提供的构建功能是可选的。第三名:支持这种未来的出色表现
乔恩·库姆斯

8
Bower仅有一个用途-从网络上将您需要的源文件下载到硬盘上。 ”这就是为什么它非常好的原因,因为它只完成一项工作。
图格柏

2
@tugberk是的,但是我们作为Web开发人员的工作还不止于此,不是吗?我们需要加载该第三方库并使用它。这就是JSPM的优势所在,并且胜过其他所有替代方案。特别是最受欢迎的webpack。
卡帕杰

64

要添加到Capaj的答案中:

如果您有一个小项目,还是要使用jspm!这是未来!(谁知道,情况会发生变化,但这是一个不错的选择)。

小型项目使用:

$ 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会在文件中自动检测到它们(但是您不能在同一文件中混合和匹配它们)。

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

18
虽然很高兴您对jspm充满热情,但我确实认为对于需要向html文档中添加jquery的人来说,使用普通脚本标签会更好。
卡帕杰

10
在这种情况下,JQuery只是一个示例,因此我认为您的评论无效。我必须说我喜欢答案的能量-如此激动和快乐,使我想立即使用jspm。:-)
Mladen Mihajlovic 2015年

2
重点不是。是的,我们只能添加jquery作为脚本。但是,当您通过JS中的import语句具有多个模块依赖项时,就会产生令人着迷的东西。然后,所有需要的system.js是使用config.js配置软件包,并在javascript依赖项链中提及import语句。
2015年

1
我只想添加var $ = require('jquery');一个CommonJS风格的导入,而不是AMD风格的导入。
Andreas Wahlqvist 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.