Она вообще никак не влияет на то, о чем написано в топике. Тем более в коммит меседже написано Also, with WebComponents it is normal to have custom elements in the DOM.
У RequireJS один из способов подключения файлов как раз очень похож на CommonJS. Для поиска всех require-ов используется Function.prototype.toString(). То есть перед вызовом функции define — все зависимоти будут подключены. Этот способ на много приятнее, чем описывать все зависимости первым аргументом в define функции.
Там есть то ли баг, то ли фича, но когда прописываешь компоненты в paths, и внутри этого компонента рекйварить другой компонент — но не будет работать относительный путь. Точнее будет, но считаться он будет от файла, где описан конфиг с paths.
Надо попробоать сжать с помощью RequireJS Optimizer
Скорее всего ен выйдет. Оптимайзер ищет строки:
require('/path/to/script');
И подключает их в проект.
Вот разница наглядно:
var scripts =[
'modules/foo/foo',
'modules/bar/bar',
'modules/application/application'
];
for (var i =0 ; i < scripts.length; i++){
require(scripts[i]);
}
Путаница скорее произошла в том, что ленивая подгрузка != ленивая инициализация.
Лично я не вижу ничего избыточного в использовании AngularJS в паре с RequireJS. И скорее всего, это тема для отдельного хабра топика и дискасса под ним.
А по поводу ленивой подгрузки модулей, эта фича обещает быть реализованной в 2-ой версии angular
И скорее всего, будет не совместимо с AngularJS v1.*
А по поводу ленивой подгрузки модулей, эта фича обещает быть реализованной в 2-ой версии angular
Да, вот как раз пост. Там есть куча ссылок на интересные гугл доки.
We’ll see a less complex DI by eliminating the config phase, simplifying the syntax by using declarative-style ES6+ annotations instead of imperative. We’ll enjoy greater capabilities by integrating DI with module loading through ES6 Modules. We’ll also see the ability to lazily-load parts of our JS through child injectors.
Да, здесь нету ленивой загрузки. Но она и не нужна, тем более в продакшене.
Во время разработки — все грузится сразу. С этим работают только разработчики.
В продакшене — весь проект минифицируется. Это в любом случае будет лучше.
Само собой, и Вам ничего не мешает так же делать при помощи AngularJS.
Каждый файл и содержит какой либо из компонентов ангулара. Вас смущает то, что он обернут в define функцию?
Вы явно забыли про конфиг для RequireJS, в не работы не намного меньше.
В котором чаще всего описываются пути для вендоров. Пути для юзер сркиптов — очень редко.
Это же на на много удобнее, писать в коде require('relative/path/to/script'); чем писать все это в head теге, да еще и учитывать последовательность подключения.
К примеру у нас приложение есть несколько модулей. Каждый модуль — отдельная часть приложения: projects, emails, advertising и так далее. И уже в самом модуле описаны все зависимости. В RequireJS есть два способ описания зависимостей — передавать параметры в define функцию, или просто реквайрить скрипты внутри функции, в таком случае это будет похоже на CommonJS. И так явно удобнее, чем пихать все head или через менеджить через какие либо утилиты бекенда.
И я еще раз говорю, модуль — логически отдельная часть, которая содержит ngModule и его компоненты — контрллеры, директивы, фильтры, сервисы и так далее. Плагины для RequireJS позволяют максимально отвязать код, от структуры проекта и возможность переносить один компонент из одного модуля в другой без особых изменений в коде (но такие сутации достаточно редкие).
Когда продакшн — да, проект собирается. А во время разработки очень удобно хранить все в отдельный файлах, грубо говоря — один класс = один файл. Тем более загрузка файлов в с помощью RequireJS — на много удобнее, чем менеджить все нужные скрипты в head теге. Так ведь будет всего лишь один подключенный скрипт, а все другие зависимости будут указаны уже внутри скриптов.
Так ведь нету никаких противоречий с модулями AngularJS. Каждый модуль (как на диаграмме в начале статьи) — и есть AngularJS модуль. Суть в том, что он находится в отдельной директории вместе со всеми своими компонентами. А плагины для RequireJS упрощают загрузку модулей, компонентов, уменьшают зависимость кода от структуры проекта и названия модулей, и структура становится более гибкой.
Это же совершенно не то, о чем статья. Очень сильная зависимость кода от структуры проекта. angularAMD — ленивая загрузка модулей приложения, где модуль — это контроллер, в котором описаны все зависимости. Реализован как обертка над angular, что не очень хорошо.
В статье описан способ как сделать структуру приложения гибче, и уменьшить зависимость кода от структуры приложения и названия модулей.
Тем более плагины, о которых написано в статье могут использоваться в паре с angularAMD. Получится ленивая загрузка + гибкость структуры и уменьшение кода в описании зависимостей.
И почитайте про PSR-0
Скорее всего ен выйдет. Оптимайзер ищет строки:
И подключает их в проект.
Вот разница наглядно:
И
А у Вас как раз зависимости описаны как первом примере.
Путаница скорее произошла в том, что ленивая подгрузка != ленивая инициализация.
Лично я не вижу ничего избыточного в использовании AngularJS в паре с RequireJS. И скорее всего, это тема для отдельного хабра топика и дискасса под ним.
И скорее всего, будет не совместимо с AngularJS v1.*
Да, вот как раз пост. Там есть куча ссылок на интересные гугл доки.
Вот ссылка на пример.
Во время разработки — все грузится сразу. С этим работают только разработчики.
В продакшене — весь проект минифицируется. Это в любом случае будет лучше.
Каждый файл и содержит какой либо из компонентов ангулара. Вас смущает то, что он обернут в define функцию?
В котором чаще всего описываются пути для вендоров. Пути для юзер сркиптов — очень редко.
Это же на на много удобнее, писать в коде require('relative/path/to/script'); чем писать все это в head теге, да еще и учитывать последовательность подключения.
К примеру у нас приложение есть несколько модулей. Каждый модуль — отдельная часть приложения: projects, emails, advertising и так далее. И уже в самом модуле описаны все зависимости. В RequireJS есть два способ описания зависимостей — передавать параметры в define функцию, или просто реквайрить скрипты внутри функции, в таком случае это будет похоже на CommonJS. И так явно удобнее, чем пихать все head или через менеджить через какие либо утилиты бекенда.
И я еще раз говорю, модуль — логически отдельная часть, которая содержит ngModule и его компоненты — контрллеры, директивы, фильтры, сервисы и так далее. Плагины для RequireJS позволяют максимально отвязать код, от структуры проекта и возможность переносить один компонент из одного модуля в другой без особых изменений в коде (но такие сутации достаточно редкие).
Так ведь нету никаких противоречий с модулями AngularJS. Каждый модуль (как на диаграмме в начале статьи) — и есть AngularJS модуль. Суть в том, что он находится в отдельной директории вместе со всеми своими компонентами. А плагины для RequireJS упрощают загрузку модулей, компонентов, уменьшают зависимость кода от структуры проекта и названия модулей, и структура становится более гибкой.
В статье описан способ как сделать структуру приложения гибче, и уменьшить зависимость кода от структуры приложения и названия модулей.
Тем более плагины, о которых написано в статье могут использоваться в паре с angularAMD. Получится ленивая загрузка + гибкость структуры и уменьшение кода в описании зависимостей.