ChillyProud
@ChillyProud

Как работает Require.JS?

Объясните пожалуйста как работает require.js, что происходит под капотом?

Получается ли что ангуларовский dependency injection по сути делает тоже самое?
  • Вопрос задан
  • 3836 просмотров
Пригласить эксперта
Ответы на вопрос 3
mudrick
@mudrick
Máximo progreso hemos alcanzado en minimo seso.
Если вы используете AngularJS, то RequrieJS вам не нужен вообще никогда.

1) Если вы делаете жирного клиента (т.е. все скрипты минифицируете в один-два файла, например: components.js (в котором AngularJS, LoDash.js и прочие библиотеки/плагины), application.js (собственно, ваша аппликация: контроллеры, директивы и прочее) и templates.js (все ХТМЛ-шаблоны для директив и страничек)), то вам RequireJS не нужен вообще — он просто бесполезен, так как асинхронно подгружать модули вам больше не нужно, ведь у вас и так всё есть, а Dependency Injection уже есть в Ангуларе из коробки.

2) Если же вы используете Ангулар и для Dependency Injection хотите использовать еще и RequireJS, то это, конечно же, бред, не делайте так — в Ангуларе всё уже есть для DI.

3) Если же вам нужна асинхронная подгрузка модулей, то используйте именно асинхронный загрузчик, без функционала DI (например, https://github.com/ded/script.js, да тысячи их) + Ангуларовский angular-loader.js, который позволяет загружать ангуларовские модули в любом порядке.
Ответ написан
Комментировать
k12th
@k12th
console.log(`You're pulling my leg, right?`);
Загрузка модулей и DI — абсолютно разные вещи. Грубо говоря (очень грубо), загрузка модулей отвечает за работу с файлами, а DI — за создание сущностей. require.js загружает файл с вашим контроллером, чтобы он вообще появился в вашем приложении, а ангуляровский DI отвечает за то, чтобы он получил нужные ему для работы сущности.

Что делает require.js: согласно конфигу и настройкам выясняет путь к файлу, отвечающему за данный модуль, создает, при необходимости, узел script с src равным этому пути, и дожидается, когда этот скрипт загрузится.
Ответ написан
Комментировать
@daron666
java/scala developer
Реквайр инжектит классы.
Ангуляр инжектит инстансы.

Тут вот толковая презенташка на тему slides.com/thomasburleson/using-requirejs-with-ang...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы