Sencha Touch - Dependencies

在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等.

上述声明方式不仅加载了文件,它还决定它应保持哪个配置文件为活动状态.加载控制器后,它确保实例化它.一旦加载了商店,它就会实例化它们并提供一个id(如果尚未给出).

特定于配置文件的依赖关系

当我们在使用配置文件时在一个应用程序中,可能只有一些特定的配置文件需要很少的功能.

配置文件特定的依赖项在配置文件本身而不是应用程序级别声明中声明.

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