Менеджер пакетов: Bower vs jspm

Как Bower отличается от jspm? Может ли Bower предоставлять jspm-функции для загрузчика универсального модуля SystemJS?

Ответы

Ответ 1

Хорошо JSPM - это гораздо больший и амбициозный проект, чем Bower. У Bower есть только одна цель - загрузить исходные файлы из Интернета на жесткий диск. Для вас, как для потребителя, беседка не делает ничего другого. Если вы хотите выполнить script файлы из беседки, вам нужно создать теги script для каждого из них.

Пока jspm является не только загрузчиком модуля. Он загружает по умолчанию systemjs, о котором вы упомянули. SystemJS реализуется как можно ближе к https://whatwg.github.io/loader/. Фактически автор JSPM является очень активным участником процесса спецификации. С помощью systemjs сегодня вы можете загружать ES6 (перетаскивая их в браузер), модули CommonJS или AMD в браузере, не создавая их. Не только модули ES6, но и все другие функции ES6, поддерживаемые traceur/babeljs/typescript. В зависимости от того, какой компилятор вы выберете при запуске jspm init. SystemJS работает 1:1 в node.js, а также в браузере, поэтому легко выполнить тестирование вашего приложения.

Также он может построить комплект для вас (jspm build), когда вам нужно перейти к производству. Таким образом, очевидно, что jspm (+ systemjs) - более мощный инструмент. Итак, как правило:

  • нужно быстро получить jquery и включить его в свой серверный шаблонный html? Перейдите с обычным тегом script. Бауэр устарел.
  • нужно создать большое приложение JS? Пойдите с Webpack. JSPM не смог достичь критической массы, и теперь все делают веб-пакет.

Ответ 2

Чтобы добавить ответ 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.
})