Может ли system.js заменить require.js

Я использую requirejs в большом проекте. Этот проект скоро будет обновлен до angular2.

Angular2 использует system.js, поэтому я тоже думаю перейти на system.js. Должен ли я удалить ссылку на библиотеку requirejs и вместо этого включить system.js и ожидать, что она будет работать, или я что-то здесь не понимаю?

Я попытался просто удалить файл require.js и добавить вместо него файл system.js, но получаю сообщения об ошибках, в которых говорится, что определение не определено. Вы можете помочь? Нужен ли мне require.js в дополнение к system.js?


person rgullhaug    schedule 25.10.2015    source источник
comment
Использует ли Angular 2.0 SystemJS или он также совместим с Webpack?   -  person Alexander Mills    schedule 25.01.2017
comment
Он совместим с обоими   -  person rgullhaug    schedule 31.01.2017


Ответы (2)


Я тоже только что перешел на system.js. Вам нужно заменить ваш require.js на system.js и добавить простой тег сценария. Итак, это должно выглядеть так:

<script src="~/lib/system.js/dist/system.js" type="text/javascript"></script>
<script>  
    // set our baseURL reference path
    System.config({
        baseURL: '/app'
    });
    System.import('startup.js');
</script>
person Rem    schedule 26.10.2015
comment
И у вас все заработало, ничего не меняя в существующих файлах, которые раньше использовали requirejs? - person rgullhaug; 26.10.2015
comment
Да, какую версию system.js вы используете? - person Rem; 26.10.2015
comment
Я заработал. Проблема заключалась в том, что функция определения и функция требования были недоступны в глобальной области видимости. Пришлось сделать так: window.define = System.amdDefine; window.require = window.requirejs = System.amdRequire; - person rgullhaug; 27.10.2015
comment
что вы будете делать, если получите system.js:4 Uncaught (in promise) Error: (SystemJS) ReferenceError: require is not defined(…) - person SuperUberDuper; 18.07.2016
comment
Спасибо за рекомендацию window.require = window.requirejs = System.amdRequire;. Но как использовать мой старый requirejs.config({...})? - person Sigfried; 16.10.2016
comment
@Sigfried, это может быть полезно: github.com /systemjs/systemjs/blob/master/docs/ и github.com/systemjs/systemjs/blob/master/docs/ - person Machado; 06.01.2018

в дополнение к вышеуказанным шагам, установленным

System.defaultJSExtensions = true;

по умолчанию systemjs не добавляет расширение .js

person Arun Kanagaraj    schedule 23.08.2016