Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
что «undefined» где-то глубоко в недрах ExtJSА как же стектрейс?
Add conditional breakpoint…:)Стыдно сказать, но я банальное приложение писал с нуля почти неделю, страдая при этом резкими перепадами настроения.
Диагностика очень часто крайне загадочна и только после пары месяцев ты начинаешь догадываться, что «undefined» где-то глубоко в недрах ExtJS означает пропущенный атрибут Store при описании выпадающего списка.
Я даже кучку хаков написал с исправлениями. И разработчикам высылаю. Но ошибок в системе очень мало.А после каждого релиза переписываете свои хаки? :)
При подключении страницы в браузер грузится около 6 мегабайтов всякого добра и это время весьма и весьма заметно.
Поэтому любой экран, всего с парой контролов, — это длиннющая портянка декларативного кода, со структурами, многократно вложенными друг в друга. Искать при таких условиях, в каком месте стоит лишняя скобка — это ад.Разбейте создание контролов на функции, вызывайте их последовательно в initComponent(), примерно так:
initComponent: function() {
var form = this._createForm();
var mainGrid = this._createMainGrid();
var contextGrid = this._createContextGrid();
this.items = [form, mainGrid, contextGrid];
this.tbar = this._createToolbar();
this.callParent(arguments);
}
Правда, от этого потеряется совместимость кода UI с Архитектом. С другой стороны, если вы пользуетесь Архитектом, то в UI-файл с портянкой декларативного кода вам заглядывать и вовсе не обязательно.Из-за жутко медленной загрузки невозможно программировать моим любимым способом, которому я научился еще от Форта — мелкими правками. Вносишь одно изменение, смотришь результат, правишь. Повторить. Так не получается — пока этот слон загрузится после каждого изменения, забываешь, что хотел сделать.Может, у вас сервер где-то далеко?
В библиотеке есть ошибки. Не очень много, но есть.Это да :(
Не лучше обстоит дело и с твоими собственными ошибками. Диагностика очень часто крайне загадочна и только после пары месяцев ты начинаешь догадываться, что «undefined» где-то глубоко в недрах ExtJS означает пропущенный атрибут Store при описании выпадающего списка.Для откладки желательно использовать полную debug-версию с комментариями, иначе получаешь в консоли "b is undefined" вместо сообщения об ошибке :)
Мне нужно написать красивый веб-интерфейс...
Приложение интранетноое, поэтому красота особенно не нужна.
Можно, правда, описывать какие-то вложенные сущности на манер «один ко многим», но эти дополнительные данные только читаются — записать их нельзя, что делает всю затею бесполезной.





При подключении страницы в браузер грузится около 6 мегабайтов всякого добра и это время весьма и весьма заметно.
Учить ExtJS жутко трудно. Она огромная, непонятно с чего начинать. Учебники и книжки в основном относятся к третьей версии, а она, в свою очередь, мало похожа на версию 4, в которой почти все сделано по-другому. По этой же причине почти бесполезны форумы, ибо все, что там написано, давно устарело.
Стыдно сказать, но я банальное приложение писал с нуля почти неделю, страдая при этом резкими перепадами настроения. Мне все время хотелось биться головой об стену — непонятно было абсолютно все. Ни одну технологию я с такими страданиями не учил.
В 4 версии ваше приложение должно быть сделано по принципу MVC. На практике это означает, что даже hello world будет состоять из десятка файлов, разложенных по нескольким разным каталогам. И прежде чем приступить к программированию любой задачи, эти файлы надо будет создать и разложить.Ну во первых ваше приложение никому и ничего не должно. Вы можете написать его точно так же как и в третьей версии. Вот только когда оно разрастется будет очень грустно. Про десяток файлов, думаю вы тоже преувеличили: app.html, app.js, контроллер и представление.
С данными тоже не все благополучно. Хранилище предполагает, что все данные всегда совершенно однородны. Можно, правда, описывать какие-то вложенные сущности на манер «один ко многим», но эти дополнительные данные только читаются — записать их нельзя, что делает всю затею бесполезной.
Описание интерфейса — это нечто. Он описывается чисто декларативно — и это плюс. Но как он описывается, господи. С помощью декларации данных Яваскрипта — а видов данных там немного, массивы да хеши. Поэтому любой экран, всего с парой контролов, — это длиннющая портянка декларативного кода, со структурами, многократно вложенными друг в друга.
Поэтому любое изменение интерфейса или кода, даже исправление грамматической ошибки, обязательно предполагает долгий розыск того места, где, собственно надо править.
requires: ['MyApplication.view.MyForm']
{
xtype: 'myform'
}
В библиотеке есть ошибки. Не очень много, но есть. Однако из-за общей сложности они превращаются в кошмар — их невозможно никак исправить. Непонятно, от чего они происходят, непонятно, что надо изменить, непонятно, вообще в чем дело.
Или пишут тебе пользователи — у нас не грузится таблица. Открываешь — и правда, не грузится. Вчера грузилась, а сегодня нет, притом, что в этом месте ты ничего не менял.
ExtJS4: практические впечатления