Require.js и оптимизация через r.js: как найти оптимальный способ объединения модулей для нескольких страниц? - PullRequest
1 голос
/ 30 марта 2012

Используя Require.js, и он работает довольно надежно.

Тем не менее, я читаю об оптимизации (http://requirejs.org/docs/optimization.html) с использованием r.js.

Насколько я понимаю, он объединяет определенные модули верхнего уровня в один файл (здорово, потому что: меньше http-звонков, минимизировано).

Это нормально, когда у меня определен только 1 тип страницы, то есть: 1 набор необходимых модулей для загрузки. Однако на любом обычном сайте у вас будет несколько типов страниц, каждый из которых требует разных модулей.

Теперь мне просто интересно, насколько умным на самом деле является r.js? Учитывает ли он все несколько страниц (с разными «потребностями») при определении, какие модули упаковывать вместе, чтобы я нев конечном итоге получим связанные с X javascriptf-файлы для типов страниц X, даже если в модулях, включенных в каждый из этих связанных сценариев, имеется значительное перекрытие.?

Разъяснение высоко ценится.

1 Ответ

1 голос
/ 04 апреля 2012

Что я понимаю, так это то, что оптимизатор находит зависимости для файла путем поиска вызовов require() и составляет список того, что он находит.(Таким образом, он находит только зависимости, переданные в require() в виде буквенных строк.) Затем файл объединяется со своими зависимостями (рекурсивно) в один файл и минимизируется.

Вы можете управлять тем, что входит в модуль вконфигурации.Вот пример:

({

baseUrl: "Website/Scripts",
dir: "Staging/Scripts",
modules: [
    { name: "main", include: ["Rotator"], exclude: ["jwPlayerDialog"] },
    { name: "jwPlayerDialog" }
],
paths: {
    "jquery": "empty:"
},
fileExclusionRegExp: /^\.|Microsoft|modernizr|unobtrusive|\.min\.|\.debug\./
})

Если вы отключите минимизацию, вы сможете легко увидеть, что входит в каждый файл.Модуль может быть включен в более чем один файл.Например, модуль Rotator выше будет в main.js, и он все еще будет доступен как Rotator.js.

...