Использование оптимизатора в requirejs для группировки и загрузки файлов - PullRequest
2 голосов
/ 18 марта 2011

Мы только начали использовать requirejs в нашем проекте, и нам это нравится.В настоящее время мы просто используем его для управления нашими многочисленными плагинами jQuery, на которых работает сайт, так что едва царапаем поверхность его потенциала ... но из-за нехватки времени это должно подождать.

У меня возникли некоторые проблемы с получениемя бы хотел, чтобы оптимизатор играл так, как мне хотелось бы. Интересно, не могли бы вы сказать мне, возможно ли это сделать?Моя структура каталогов:

> /common/
> /common/*.js - common plugins used on most pages on the site
> /infrequent/
> /infrequent/infrequentModule.js
> /infrequent/ckeditor
> /infrequent/ckeditor/1000s.js
> /require.js
> /jquery.js
> /main.js - this file contains all scripts in common. It looks at the page and call the necessary plugins.

Оптимизация / сборка надежд:

  • main.js будет содержать все распространенные сценарии.На большинстве страниц этот скрипт будет единственным загруженным (кроме require.js)
  • main.js просматривает страницу, если он видит, что ему нужен нечастый плагин / модуль, который загружает этот асинхронный код.Поэтому на нечастой странице я могу загрузить require.js, main.js и infrequentModule.js.

Я пробовал различные методы в сценарии сборки, чтобы исключить и включить файлы для получения желаемых результатов, но длябезрезультатно.Кто-нибудь имеет какие-либо идеи или знает, возможно ли это вообще?

1 Ответ

3 голосов
/ 22 марта 2011

ОК, поэтому я получил несколько отличных ответов в группе Google для require.js - http://groups.google.com/group/requirejs/browse_thread/thread/359b02473f4e707

Ниже приведен полезный ответ, который мне дали, который, я надеюсь, может помочь кому-то еще ...

Привет, в настоящее время я делаю это в одном из моих проектов, вот мой build.js:

paths: { 
                //load libs from cdn 
                "jqueryUI": "jqueryUI", //temp static file for build 
                "swfobject": "swfobject", //temp static file for build 
                "Templates": "../Templates/Settings" 
        }, 
modules: [{ 
            name: "appName", 
                        excludeShallow: ["jqueryUI", "swfobject", "Modules/ 
module.preferences"] 
        } 

Затем в одном из моих модулей у меня есть вызов require для Modules / module.preferences, которыйЯ выполняю, когда мне это нужно:

function loadPreferences(){ 
 require(["Modules/module.preferences"],function(){ 
                     //Execute some init code after the module has 
loaded 
         }) 
 } 
} 

Это позволяет выполнить то, что вы описали, где мне нужно и что основная загрузка при загрузке страницы, затем module.preferences загружает асинхронно, когда мне это нужно.Надеюсь, это поможет, Джефф.

...