В Sencha Touch есть определенные способы объявления зависимостей, один в приложении, а другой в классах.
Давайте посмотрим на различные способы определения зависимостей.
Зависимости уровня приложения
Здесь мы объявляем все зависимости при создании Ext.application.
Ext.application({ name: 'MyApp', views: ['StudentsView'], models: ['StudentsModel'], controllers: ['StudentsController'], stores: ['StudentsStore'], profiles: ['Phone', 'Tablet'] });
Теперь, когда приложение загружено, все зависимости будут загружены одновременно. Путь к другим файлам будет —
- MyApp.views.StudentsView
- MyApp.models.StudentsModel
- MyApp.stores.StudentsStore и т. Д.
Приведенный выше способ объявления не только загружает файл, но и решает, какой профиль он должен сохранять активным. После загрузки контроллера он обязательно создает его экземпляр. Как только хранилища загружены, он создает их и предоставляет один идентификатор, если он еще не указан.
Зависимости от профиля
Когда мы используем профили в приложении, возможны ситуации, когда некоторые функциональные возможности требуются только для определенного профиля.
Специфичные для профиля зависимости объявляются в самих профилях вместо объявления уровня приложения.
Ext.define('MyApp.profile.Tablet', { extend: 'Ext.app.Profile', config: { views: ['StudentView'], controllers: ['StudentController'], models: ['StudentModel'] } });
Зависимости загружаются независимо от того, активен профиль или нет. Однако на основе активного профиля происходит дальнейшая обработка, такая как создание экземпляра контроллера и сохранение.
Вложенные зависимости
Когда у нас более крупное приложение, у нас есть несколько контроллеров, моделей, представлений и хранилищ.
Всегда полезно сохранить модульность в больших приложениях. Для этого мы можем определить подпапки и при объявлении зависимостей мы можем использовать имя подпапки для объявления.
Ext.application({ name: 'MyApp', controllers: ['Controller', 'nested.NewController'], views: ['class.Cview', 'SView'] });
В приведенном выше случае будут загружены следующие файлы —
- MyApp.controllers.Controller
- MyApp.controllers.nested.NewController
- MyApp.Views.Sview
- MyApp.Views.class.Cview
Внешние зависимости
Мы можем указать зависимости вне приложения, задав полностью квалифицированные имена классов как:
Ext.Loader.setPath({ 'Class': 'Class' }); Ext.application({ views: ['Class.view.LoginForm', 'Welcome'], controllers: ['Class.controller.Sessions', 'Main'], models: ['Class.model.User'] });
В приведенном выше случае будут загружены следующие файлы —