В коде, с которым я сейчас работаю встречаются такие файлы, в которых понамешано много всего разного в одном файла: функции, перечисления компонент, переменные и т.д. Работая с одним таким файлом я решил, что потрачу время и разбирусь с тем, как можно отделить "котлеты" от "мух". Под отделением я имею в виду следующее: есть некая страница, на которой размещен компонент с вкладками, на каждой вкладке предполагается своя особенная функциональность. По мне кажется очевидным определить названия вкладок, а функциональность вынести в компоненты, которые будут на этой вкладке. Так я добрался до Записок Исаака Тынгылчава, у которого есть подборка статей по работе с 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.
Прошлые записи
- Эволюция веб-приложений. От статичного HTML до Single Page Application и Progressive Web Application
- Переезд в Калининград
- Была ли спецоперация на Украине неизбежна?
- О serverless технологии для чатботов
- Свободное время на улучшение блога
- o-zhizni-v-kaliningrade-spustya-god
- Продажа гаража из другого города
- В Калининграде спустя полгода
- Выйти на работу или сидеть дома
- Теперь мы живем в старой немецкой квартире и счастливы
- Как за один день найти жилье в августе 2020 (после пандемии) и чуть не остаться на улице с двумя детьми