Cap*_*paj 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.

  • "*Bower只有一个目的 - 从网络下载你需要的源文件到你的硬盘.*"这就是为什么它真的很好,因为它只做一个工作. (8认同)
  • @tugberk是的,但是我们作为网络开发者的工作并没有就此结束,是吗?我们需要加载第三方库并使用它.这就是JSPM擅长并击败所有其他选择的地方.特别是最受欢迎的网络包. (2认同)

tru*_*ktr 64

再加上Capaj的回答:

如果你有一个小项目,无论如何都要使用jspm!这是未来!(谁知道,事情会发生变化,但这是一个不错的选择).

小项目用途:

$ jspm install jquery
Run Code Online (Sandbox Code Playgroud)

然后在你的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>
Run Code Online (Sandbox Code Playgroud)

然后在main.js中:

import $ from 'jquery'; // ES6-style import
// do whatever with jQuery here.
Run Code Online (Sandbox Code Playgroud)

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

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

  • 虽然我很高兴您对jspm如此热衷,但我真的认为对于需要将jquery添加到html文档的人来说,他们最好使用普通的脚本标记. (18认同)
  • 在这种情况下,JQuery只是一个例子,所以我不认为你的评论是有效的.我必须说我喜欢答案的能量 - 如此兴奋和快乐,让我想立即使用jspm.:-) (10认同)
  • 关键在于.是的,我们可以只添加jquery作为脚本.但是当你有多个模块依赖关系和JS中的import语句时,会出现这些引人入胜的东西.然后,所有system.js都需要使用config.js配置包,并提及javascript依赖链中的import语句. (2认同)