Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.12.2015, 23:19
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

requires vs uses
http://docs.sencha.com/extjs/6.0/6.0...s-cfg-requires

Инструкция requires гарантирует загрузку, перечисленных в ней классов до инстанцирования (наверное до создания экземпляров) данного класса.

http://docs.sencha.com/extjs/6.0/6.0...Class-cfg-uses

Инструкция uses гарантирует загрузку, перечисленных в ней классов до вызова обработчиков Ext.onReady.

Отсюда я делаю вывод, что requires нужно использовать, если создаются экземпляры этого класса до Ext.onReady, что происходит весьма редко. Мало того, с использованием Sencha Cmd этот случай вообще исключен из жизни.

Таким образом, надо всегда и везде использовать uses*. И только когда нужен экземпляр класса до Ext.onReady, то нужно использовать requires.

Почему тогда всюду используется requires?

И в коде самого ExtJS и в пользовательском коде.

_____
* А то может возникнуть предупреждение "Duplicate class name 'Ext.ux.AppInspector' specified, must be a non-empty string", которое крайне сложно исправить.
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.

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

Сообщение от khusamov Посмотреть сообщение
Инструкция requires гарантирует загрузку, перечисленных в ней классов до инстанцирования (наверное до создания экземпляров) данного класса.
Вот тут ошибка: requires гарантирует загрузку перечисленных зависимостей до *создания* данного класса. Т.е. сам класс не определён до тех пор, пока все зависимости не созданы.

Цитата:
Инструкция uses гарантирует загрузку, перечисленных в ней классов до вызова обработчиков Ext.onReady.
Это верно.

Цитата:
Почему тогда всюду используется requires?

И в коде самого ExtJS и в пользовательском коде.
Потому что uses фактически нужно только для того, чтобы разрывать круговые зависимости: если Foo нужен Bar, а Bar в свою очередь хочет Foo, то мы не можем включить их в requires с обеих сторон, загрузчик обидится. В таком случае Foo может включать Bar в requires, а Bar включает Foo в uses, и все довольны.
Ответить с цитированием
  #3 (permalink)  
Старый 12.12.2015, 01:16
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

тогда примеры в документации вводят в заблуждение
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
Ответить с цитированием
  #4 (permalink)  
Старый 12.12.2015, 02:15
Аватар для nohuhu
Профессор
Отправить личное сообщение для nohuhu Посмотреть профиль Найти все сообщения от nohuhu
 
Регистрация: 21.05.2015
Сообщений: 321

Запросто и могут, это сложная тема для объяснения. Если подскажете, какие именно примеры вам показались неясными, то мы поправим. :)

Документация не бывает хорошей, только адекватной... Иногда... :)
Ответить с цитированием
  #5 (permalink)  
Старый 12.12.2015, 19:52
Аватар для khusamov
Соединяю Node.js и Ext JS
Отправить личное сообщение для khusamov Посмотреть профиль Найти все сообщения от khusamov
 
Регистрация: 25.06.2009
Сообщений: 1,033

Ссылки на примеры я уже давал, вот они:
http://docs.sencha.com/extjs/6.0/6.0...s-cfg-requires
http://docs.sencha.com/extjs/6.0/6.0...Class-cfg-uses
__________________
Хусамов Сухроб, Москва, khusamov@yandex.ru
Мой JS-стек: Sencha ExtJS 6, Node.js, TypeScript.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск