2016-09-21 52 views
0

EXTJS 6,需要或用途 - 确定编程务实确定EXT JS 6 - 要求或使用了子文件

在工作中,我们使用EXT JS 6,我一直在负责“加速起来'。我已经完成了几件事,并且已经实现了至少30%的速度提升。然而,当加载一个页面/模块/节(无论你想调用它),第一个下面的每个单独的组件都加载异步。 这对页面加载造成大约20秒的可测量延迟。

我相信这是因为当我们从EXT JS 4迁移时,我们将所有的东西放在我们的类定义中。

requires: [ 
    'app.view.setup.thing.TabController', 
    'app.view.setup.thing.Panel', 
    'app.store.setup.combo.thingGroupIcons' 
], 

我在大量的文档资料已经外观和已经开始,我们应该使用“使用”定义程序的部分可以单独加载到“屏幕上为先”的东西的结论。

因此,例如,上面会成为类似:

requires: [ 
    'app.view.setup.thing.Panel', 
], 
uses: [ 
    'app.view.setup.thing.TabController', 
    'app.store.setup.combo.thingGroupIcons' 
], 

程序可能有一个良好的500页/段到它。可能有3000〜个文件。所以我的问题是(真的是两倍)。

问题1:我怎样才能务实地确定某些东西在我的“需要”可以/应该使用加载“用途”

问题2:我在正确的轨道上在所有?

围绕EXT JS有一个非常敌对的社区,所以我在Stack上问这个问题,希望人们会更有帮助。今天我已经花了七个小时阅读,下面是我认为实际上有用的一些链接。

https://www.sencha.com/forum/archive/index.php/t-133191.html?s=8b90c637dd96fed53597cd029544d955 http://docs.sencha.com/extjs/6.0.0/classic/Ext.Class.html#cfg-requires

+0

顺便说一下,关于整个'加速'的事情。你是否使用Sencha Cmd来编译你的应用,并且你知道App Cache? HTTPS://docs.sencha。com/cmd/guides/microloader.html#microloader _-_ application_cache – pagep

+1

是的,我愿意,是的。编译后的版本要快得多(但速度还不够快),并且缓存只会在当前问题之后进行不同的后期下载。 – TolMera

+0

您确定您使用的是内置副本吗?如果您使用的是建立的副本,则不会发生这种情况:“第一个下面的每个组件都加载了异步。” –

回答

1

要确定您可以通过uses加载哪些,你只能从“需要”部分移动到一切的“使用”部分,检查什么地方不对头。

但是使用uses,您只能改善未编译版本的加载时间,而不是cmd编译版本的加载时间,其中所有依赖项都位于单个JavaScript文件中,而哪些应该是面向客户的唯一版本。

当然,你总是可以像我老板一样做,并得到一些高薪顾问™(来自Sencha或靠近你的Sencha认可的店铺)来检查你的申请。他们的第一个结果正是我已经告诉他的:我们没有可能进一步显着提高我们Cmd编译版本的加载速度。他们告诉我们,我们只剩下一个选项 - 我应该添加一个动画启动画面,这会减少一半的加载时间。当然,如果您使用秒表,但用户在启动应用程序时没有秒表...

+0

谢谢,这是一个非常好的答案:)我猜测,将所有东西都从'require'移动到'uses',然后运行'sencha app build production'会列出失败,或者您认为我将不得不测试每个模块的功能手动(是啊,我们没有单元测试: - /)?如果构建命令列出错误,我可以使用正则表达式来编写一些东西,以帮助我将正确的东西放在正确的位置......即使这不会改变正在下载的文件的大小,它可能会** *让JS运行用户端更快一点(值得测试) – TolMera

+1

您必须手动测试。当构建依赖关系树时,构建命令不关心**何时会调用依赖关系,并且错误只会在运行时显示。 – Alexander

+0

谢谢你回答很多问题:)优秀的答案! – TolMera