Показать сообщение отдельно
  #7 (permalink)  
Старый 21.05.2015, 23:11
Аватар для nohuhu
Профессор
Отправить личное сообщение для nohuhu Посмотреть профиль Найти все сообщения от nohuhu
 
Регистрация: 21.05.2015
Сообщений: 321

Это не хрень, и путаться в ней не нужно. Это полезные инструменты, которыми можно (и нужно!) пользоваться, тогда и alternateClassName не понадобится вовсе. ;)

Если мы говорим о классах, то в общем случае есть два варианта создания объекта данного класса:

Код:
var foo = new My.foo.Foo();
или по алиасу:

Код:
Ext.define('My.foo.Foo', {
    xtype: 'foo',
    // или:
    // alias: 'widget.foo',
});

var foo = Ext.widget('foo');
xtype это частный случай alias для компонентов (виджетов). Есть ещё много других пространств для алиасов: store.*, controller.*, etc.

Глубинный смысл всего этого добра в том, чтобы уйти от императивного стиля кодирования, когда вам нужно руками создавать все объекты. Вместо этого создавайте классы с конфигурацией, которая ссылается на алиасы, и не нужно будет хардкодить имена классов. По факту их вообще и не нужно использовать, если ваш проект использует Sencha Cmd. Модуль отслеживания зависимостей в Cmd уже весьма неплох, и даже requires можно в общем случае опустить: Cmd все зависимости найдёт за вас, в т.ч. вычислит по alias.

alternateClassName это мисфича, которую руки очень чешутся прибить, но к сожалению она сидит очень глубоко в class system, и выкорчёвывать её оттуда будет больнее, чем просто оставить и забыть. Но и использовать её в userspace тоже не нужно, это я вам как доктор говорю.
Ответить с цитированием