Sencha Touch 2:在app.js中加载太多视图和控制器

时间:2014-03-07 10:59:49

标签: javascript cordova sencha-touch

我有一个应用程序,最初在app.js中加载了大量的视图和控制器,当我用Phonegap打包时,应用程序启动速度太慢。

有没有办法动态加载它们而不在app.js中加载它们而没有收到警告“同步加载...考虑添加...明确作为要求”

以下是代码:

views: [             
    'UserProfile',
    'Record',
    'AllOptions',
    'Login',
    'ForgotPassword',
    'Pin',
    'Newsletter',
    'UserHome',
    'Settings',
    'About',
    'UserCard',
    'RecordDetail',
    'AboutDetail',
    'NewPIN',
    'SubjectDetail'
],

controllers: ['MainController', 'LoginController', 'NewsletterController', 'SettingsController', 'AllOptionsController', 'ProfileController', 'UserCardController','RecordController','AboutController', 'SubscriptionsController'],

models: ['New', 'Message', 'SettingsAction','StudentRecord','Faculty','SubjectRecord'],
stores: ['NewsStore', 'MessagesStore', 'SettingsActionsStore','StudentRecordStore', 'FacultysStore', 'StudentSubjectStore'],

1 个答案:

答案 0 :(得分:0)

需要在App的控制器部分配置控制器。事实上,在发布期间,每个Controller.init()函数在<{strong> {/ 1}}

之前被称为

来自http://docs.sencha.com/touch/2.3.1/#!/api/Ext.app.Application

  

每个应用程序都可以定义一个启动函数,只要你的所有函数都调用它   应用程序的类已加载,应用程序已准备好启动。   这通常是放置任何应用程序启动逻辑的最佳位置,   通常为您的应用创建主视图结构。

     

除了Application启动功能外,还有另外两个   您可以放置​​应用启动逻辑的地方。首先,每个控制器都能够   定义一个init函数,该函数在Application启动函数之前调用。   其次,如果您使用的是设备配置文件,则每个配置文件都可以定义一个   启动函数,在Controller init函数之后调用   但在应用程序启动功能之前。

     

请注意,只有活动配置文件的启动功能名为--for   例如,如果您为手机和平板电脑定义配置文件,然后启动   平板电脑上的应用程序,只有平板电脑配置文件的启动功能   调用。

     

控制器#init函数称为Profile#启动函数调用   Application#launch函数叫做Controller#launch函数调用   使用Profiles时,通常会放置大部分启动逻辑   在Profile启动函数中,因为每个Profile都有一个   需要在启动时构建的不同视图集。

但是你可以避免在App视图部分中定义所有视图,如果它们中的任何一个实际上是另一个视图的子视图(仅在使用父视图时才会使用):

视图具有App.launch()配置,您可以使用它来要求所需的子视图或组件,而控制器具有requires配置:

所以,假设你有这个依赖树:

views

您可以在联系人控制器中使用表单,列表和详细信息视图,而无需在联系人控制器中使用表单,列表和详细信息视图。

这样做的好处是,如果你第二次停止使用联系人部分,你将从应用程序中删除联系人控制器,子视图将不再包含在你的应用程序代码中。

每次在控制台日志中看到home |-> contacts |-> contact form |-> contact list |-> contact detail |-> news 时,都意味着您需要将该组件(如果它是您自定义视图或Sencha框架组件)添加到"Synchronously loading ... consider adding ... explicitly as a require"在适当的视图中的部分。这样,当您使用Sencha命令为生产部署构建包时,编译脚本只能添加实际使用的组件,并且它将生成更小的包。