没有在extjs中使用require没有加载效果
Not Using requires in extjs has no loading effect
我正在使用 CMD 和 extjs。在我的 Main.js 中,我有类似
的内容
Ext.define('Abc.view.main.Main', {
extend: 'Ext.panel.Panel',
xtype: 'app-main',
header:{
height: 25,
titleAlign: 'center',
title: 'new tile,
padding: '0 0 0 10'
},
requires: [
'Abc.view.main.MainController',
'Abc.view.main.Component'
],
如果您看到需要,我需要一些 类。如果我删除 requires 中的所有 类 并将其保留为
requires: []
仅正确加载所有页面。那么我通过在 requires 中添加文件得到的好处是什么。
首先,您的应用程序 (Application.js
) 有一个必需的 views
、stores
和 controllers
列表。如果您的控制器和组件在这些 "global" 列表中,则在评估 requires
列表时它们已经加载,因此您根本看不出有什么不同。如果您在其他项目中重复使用该组件,而忘记将其添加到 Application.js
,您可能会看到不同之处。
如果在需要时尚未加载它们,可能会发生三种情况:
xtype
尚未在 ComponentManager
中注册,因此如果您通过 xtype
实例化,这将失败 ("could not resolve dependency")。
- 如果用全名实例化,可能会提示组件是同步加载的,比一次性异步加载整个
requires
列表要慢
如果使用变量实例化,Sencha Cmd完全无法将需要的文件添加到依赖树中,并且在构建文件中可能会丢失。示例:
var doWindow = true;
var component = doWindow?'Ext.Window':'Ext.panel.Panel';
Ext.create(component,{
...
});
因为 requires
列表也被 Sencha Cmd 用来解析依赖树并在构建的 js 文件中对组件定义进行正确的部分排序。
我正在使用 CMD 和 extjs。在我的 Main.js 中,我有类似
的内容Ext.define('Abc.view.main.Main', {
extend: 'Ext.panel.Panel',
xtype: 'app-main',
header:{
height: 25,
titleAlign: 'center',
title: 'new tile,
padding: '0 0 0 10'
},
requires: [
'Abc.view.main.MainController',
'Abc.view.main.Component'
],
如果您看到需要,我需要一些 类。如果我删除 requires 中的所有 类 并将其保留为
requires: []
仅正确加载所有页面。那么我通过在 requires 中添加文件得到的好处是什么。
首先,您的应用程序 (Application.js
) 有一个必需的 views
、stores
和 controllers
列表。如果您的控制器和组件在这些 "global" 列表中,则在评估 requires
列表时它们已经加载,因此您根本看不出有什么不同。如果您在其他项目中重复使用该组件,而忘记将其添加到 Application.js
,您可能会看到不同之处。
如果在需要时尚未加载它们,可能会发生三种情况:
xtype
尚未在ComponentManager
中注册,因此如果您通过xtype
实例化,这将失败 ("could not resolve dependency")。- 如果用全名实例化,可能会提示组件是同步加载的,比一次性异步加载整个
requires
列表要慢 如果使用变量实例化,Sencha Cmd完全无法将需要的文件添加到依赖树中,并且在构建文件中可能会丢失。示例:
var doWindow = true; var component = doWindow?'Ext.Window':'Ext.panel.Panel'; Ext.create(component,{ ... });
因为 requires
列表也被 Sencha Cmd 用来解析依赖树并在构建的 js 文件中对组件定义进行正确的部分排序。