Это не хрень, и путаться в ней не нужно. Это полезные инструменты, которыми можно (и нужно!) пользоваться, тогда и 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 тоже не нужно, это я вам как доктор говорю.