В коде, с которым я сейчас работаю встречаются такие файлы, в которых понамешано много всего разного в одном файла: функции, перечисления компонент, переменные и т.д. Работая с одним таким файлом я решил, что потрачу время и разбирусь с тем, как можно отделить "котлеты" от "мух". Под отделением я имею в виду следующее: есть некая страница, на которой размещен компонент с вкладками, на каждой вкладке предполагается своя особенная функциональность. По мне кажется очевидным определить названия вкладок, а функциональность вынести в компоненты, которые будут на этой вкладке. Так я добрался до Записок Исаака Тынгылчава, у которого есть подборка статей по работе с Ext4Js. Прочитав посты про большие приложения я приступил к делу.

Задача была такой: добавить на существующую вкладку компонент "грид" с функциями добавления удаления, редактирования. Редабктирование и добавление должно было производиться из модального окна. То есть нужно сделать два отдельных компонент: грид и окно. Причем окно должно быть доступно из грида.

В результате получилось следующее:

Я создал папку app в src и в ней создал каталоги по модулям. Получилось примерно так: js/src/app/Folder/File.js.

Далее в файле, в котором есть табы я задал путь и подключил файлы.

[js]

Ext.Loader.setPath('Nts', '/media/js/app');

Ext.require([

'Ext.window.MessageBox',

'Ext.tip.*',

'NameSpace.Folder.File1',

'NameSpace.Folder.File2',

]);

<!--много кода-->

<!--таб-->

{

title: 'title',

html: 'html',

listeners: {

boxready: function() {

    var grid = Ext.create('My.NameSpace.Component', {

        myparam         : id,

        renderTo        : 'to_render_id',

    });



    grid.store.proxy.url =  '/controller/method/' + id;

}

},

[/js]

То есть я просто создаю компонент грид. А это грид описан в файле File1. Получается некая структура и мало мальский порядок, а главное понятность для других, что я очень люблю.

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

Для меня пока остается непонятным как организовать межкомпонентное взаимодействие, но у меня для этого еще есть время и это будет следующий шаг в понимании ExtJs.