Учебники

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']
});

В приведенном выше случае будут загружены следующие файлы —