Как и где я должен хранить свои собственные файлы JavaScript YUI3? - PullRequest
2 голосов
/ 17 марта 2011

Я планирую написать несколько модулей JavaScript, которые должны быть загружены с YUI3.Как мне организовать свои файлы и папки?Есть ли рекомендуемая структура папок?Если я храню мои файлы, похожие на «ядро» или «галерею», загрузка должна быть легкой - или нет?

Нужно ли перечислять каждый модуль в «YUI (). Use ..»", если я сохраню свои сценарии следующим образом?

de-mylib-www/mymodules/mod1/mod1-base.js
de-mylib-www/mymodules/mod2/mod2-base.js
de-mylib-www/mymodules/mod3/mod3-base.js
de-mylib-www/mymodules/mod3/mod3-class1.js
de-mylib-www/mymodules/mod3/mod3-class2.js

Ответы [ 2 ]

2 голосов
/ 08 июня 2011

Чтобы получить максимальную отдачу от паттерна загрузчика YUI, вы должны играть по нескольким его правилам. Ваш пример выглядит почти совершенно правильно, насколько паттерны каталогов идут.

Если вы явно не включите исходные файлы javascript в свой документ, вам нужно будет уведомить загрузчик YUI о том, что модули существуют и какие у них зависимости. На данный момент есть ошибка в способе загрузки зависимостей для модуля, поэтому вы должны объявить зависимости в двух местах, в конфигурации загрузчика и в качестве постфикса к вашим операторам YUI.add.

Вы можете настроить загрузчик двумя способами: вы можете передать конфигурацию в качестве аргумента YUI () перед вызовом use для него, или вы можете назначить конфигурацию глобальной переменной YUI_config:

var cfg = {
    /* other configs */
    modules: {
        'mod3-base': { requires: [ 'mod3-class1', 'mod3-class2' ] },
        'mod3-class1': { /* */ },
        'mod3-class2': { /* */ }
    }
}

// You could pass the config in as an argument:
YUI(cfg).use('mod3-class2', function(Y) {
    // your code
});

// Or set it as a magic global:
YUI_config = cfg; // will implicitly configure all YUI().use statements

Вам необходимо настроить загрузчик так, чтобы он знал, где найти файлы вашего модуля.

Как правило, загрузчик ожидает, что каждый модуль имеет свой собственный каталог, который содержит один или несколько файлов субмодулей и сцепленный файл «супермодулей». Например, глядя на модуль «База», мы видим следующую схему:

  1. BASE-base.js
  2. BASE-build.js
  3. BASE-pluginhost.js
  4. base.js: объединенная копия base-base, base-build и base-pluginhost

Каждый из этих четырех типов имеет три варианта: «сырой» исходный файл, «-min» и «-debug». В зависимости от того, как вы настроили ваш загрузчик, он может искать минимизированные варианты.

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

Правильный способ сделать это - перечислить модули, которые нужны вашей странице в вызове YUI.use(), и перечислить модули, которые нужны этим модулям, в качестве требований.

Предположим, что вы хотите использовать mod3-class2 на своей странице и что mod3-class2 зависит от mod1-base и mod3-base. Вы бы хотели что-то вроде этого на своей главной странице:

YUI().use('mod3-class2', function (Y) {
    /* Your code here */
});

Затем вы должны указать зависимости mod3-class2 в mod3-class2.js следующим образом:

YUI.add('mod3-class2', function(Y) {
    /* Module code here */
}, 'module version', {
    requires: ['mod1-base', 'mod3-base']
});

Вы также можете использовать YUI Build Tool , который использует файлы конфигурации для генерации этого кода оболочки.

...