Каковы хорошие подходы к организации очень длинной конфигурации элемента ExtJS, содержащей много вложенных элементов? - PullRequest
1 голос
/ 11 июля 2011

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

My.Ns.PreferencesWindow = Ext.extend(Ext.Window, {

    items: [
        // A tab
        {
            items: [
                // Form fields
                {},
                {},
                {},
            ]
        },
        // A tab
        {
            items: [
                // Form fields
                {},
                {},
                {},
            ]
        },
        ...
    ]
});
  • Я не спрашиваю, как организовать большое приложение ExtJS. Я прочитал Лучший способ организовать проект ExtJS и сообщения Саки в блоге на тему .
  • В действительности Ext.extend не имеет смысла для каждого из элементов, потому что они не будут созданы более одного раза.
  • Инкапсуляция различных компонентов в функциях «генератора», которые просто возвращают json элемента, на первый взгляд кажется разумным подходом.

1 Ответ

2 голосов
/ 11 июля 2011

Просто используйте переменные, чтобы сделать его более читабельным:

var tabOneCfg = {
    items: [
        // etc.
    ]
};

var tabTwoCfg = {
    items: [
        // etc.
    ]
};

My.Ns.PreferencesWindow = Ext.extend(Ext.Window, {
    items: [
        tabOneCfg,
        tabTwoCfg
    ]
});

Вы можете сделать его настолько гранулярным, насколько захотите, и даже включать субконфиги в отдельные файлы (хотя схема такого типа не воспроизводитсяхорошо с динамической загрузкой под Ext 4).Функция генератора или фабрики также может иметь смысл, в зависимости от природы конфигов.В принципе, в любом случае это одно и то же - просто разбейте субконфиги на более мелкие куски и используйте их по мере необходимости.

...