Bower和jspm有什么不同?Bower能否提供关于SystemJS universal module loader的jspm功能?
Bower和jspm有什么不同?Bower能否提供关于SystemJS universal module loader的jspm功能?
JSPM是一个比Bower更大且更有雄心壮志的项目。Bower只有一个目的——从网络上下载所需的源文件到硬盘中。对于您作为消费者来说,Bower没有其他功能。如果要执行Bower中的脚本文件,则需要为它们创建单独的脚本标记。
而JSPM不仅是一个模块下载器。它默认会下载前面提到的SystemJS。SystemJS尽可能地实现了与https://whatwg.github.io/loader/相似的规范。事实上,JSPM的作者非常积极参与规范过程。通过 SystemJS,今天您可以在浏览器中加载ES6模块(通过在浏览器中转译),CommonJS或AMD模块,而无需构建它们。除了ES6模块之外,traceur/babeljs/typescript支持的所有其他ES6特性也同样可用。这取决于在运行jspm init
时选择哪个编译器。SystemJS在node.js和浏览器中的工作方式相同,因此轻松进行应用程序的单元测试。
此外,当您需要进入生产时,它还可以为您构建捆绑包(jspm build
)。因此,显然jspm(+systemjs)是一种更强大的工具。
因此,可以遵循以下经验法则:
补充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.
})
var $ = require('jquery');
是一种 CommonJS 风格的导入方式,而不是 AMD 风格。 - Andreas Wahlqvist