当 ExtJS 4+ 与 asynchronous loading 一起使用时人们会熟悉这种警告:
[Ext.Loader] Synchronously loading 'MY.particular.module';
consider adding Ext.require('MY.particular.module') above Ext.onReady
如何识别导致此警告的 JavaScript 模块( Controller 、组件等)? IE。
requires
中同步加载include模块的地方列表。纠正这些警告的正确方法是什么?是否存在自动执行此操作的方法?
附言现在唯一的方法是设置一个引发警告的调试点,并追溯到导致生成警告的文件中的哪一行。
最佳答案
在 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';
}
}
});
而且,如果您不关心性能,而只想摆脱杂散警告(从技术上讲是精神错乱,您可以在加载程序配置中清除错误消息。
Ext.loader.setConfig({
enabled: true,
paths: {
'My': 'my_own_path'
},
onError:function(){}//or custom handler? :D
请参阅 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
关于extjs - 如何解决 ExtJS "Synchronously loading"警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11930992/