Как и где я должен хранить свои собственные файлы JavaScript YUI3?

Я планирую написать несколько модулей 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

person koalabruder    schedule 17.03.2011    source источник


Ответы (2)


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

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

Вы можете настроить загрузчик двумя способами: вы можете передать конфигурацию в качестве аргумента YUI() перед вызовом ее использования, или вы можете назначить конфигурацию глобальной переменной 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.js
  2. база-build.js
  3. база-pluginhost.js
  4. base.js: объединенная копия base-base, base-build и base-pluginhost.

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

person Nick Husher    schedule 07.06.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, который использует файлы конфигурации для создания кода оболочки.

person lawnsea    schedule 22.03.2011