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


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

2 74

2 ответа:

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

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

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

  • нужно быстро получить jquery и включить его в свой серверный шаблонный html? Идите с обычным тегом сценария. Бауэр был осужден.
  • нужно построить большое приложение JS? Идти с Webpack. JSPM не удалось достичь критической массы и сейчас все делают webpack.

чтобы добавить к ответу капая:

если у вас есть небольшой проект, пойдите с 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>

далее в главном.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.
})