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现在实现此目的的唯一方法是设置一个调试点,在该调试点引发警告,并追溯到哪个行导致生成警告的文件.
在chrome中,在你的堆栈跟踪中,(我认为Firefox现在也会堆栈跟踪?)在模块中调用的文件通常(总是?)第一个不是ext-all的文件.
Ext.require 是用来自动化东西(例如js-minification)的东西,所以你不能真正自动化它本身.
当你声明一个组件(使用Ext.define或Ext.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