如何解决ExtJS"同步加载"警告

Jos*_*mit 6 extjs extjs4 extjs-mvc extjs4.1

当使用ExtJS 4+进行异步加载时,您会熟悉这种警告:

[Ext.Loader] Synchronously loading 'MY.particular.module';
consider adding Ext.require('MY.particular.module') above Ext.onReady
Run Code Online (Sandbox Code Playgroud)

如何识别哪个JavaScript模块(无论是控制器,组件等)是否会导致此警告?即包含模块同步加载到requires列表中的位置.

纠正这些警告的正确方法是什么?是否存在自动执行此操作的方法?

PS现在实现此目的的唯一方法是设置一个调试点,在该调试点引发警告,并追溯到哪个行导致生成警告的文件.

Ale*_*lex 7

在chrome中,在你的堆栈跟踪中,(我认为Firefox现在也会堆栈跟踪?)在模块中调用的文件通常(总是?)第一个不是ext-all的文件.

Ext.require 是用来自动化东西(例如js-minification)的东西,所以你不能真正自动化它本身.

当你声明一个组件(使用Ext.defineExt.create)时,你应该指定模块Ext将用于组件的模块Ext.require(如果你想要至少除掉这个警告)

您使用的每个自定义组件应该或多或少遵循相同的想法:

Ext.define('My.app.Panel', {
    extend: 'Ext.panel.Panel', // 
    requires: [
        'My.app.PanelPart2', //Hey! warning is gone!
        'My.app.PanelPart3'
    ]

    constructor: function (config) {
        this.callParent(arguments); 
        //...
    },

    statics: {
        method: function () {
            return 'abc';
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

如果你不关心性能,只想摆脱流浪警告(技术上的疯狂,你可以在加载器配置中捣乱你的错误信息.

Ext.loader.setConfig({
  enabled: true,
  paths: {
      'My': 'my_own_path'
  },
  onError:function(){}//or custom handler? :D
Run Code Online (Sandbox Code Playgroud)

请参阅mitchsimeons的回答:http://www.sencha.com/forum/showthread.php? 178888-Tons-of-Synchronously-Loading-Warning-Messages

以及关于为什么需要的博客文章:http: //www.sencha.com/blog/using-ext-loader-for-your-application