Sencha Touch - Зависимости
В 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']
});
В приведенном выше случае будут загружены следующие файлы -
- Class/view/LoginForm.js
- Class/controller/Sessions.js
- Class/model/User.js
- app/view/Welcome.js
- app/controller/Main.js