我正在寻找一种方法来加速Cordova上的插件加载,这样我就可以最早显示我的UI(UI在第一次启动时并不需要所有插件)。
到目前为止我尝试过:
根据文档,我尝试添加:<param name="onload" value="false" />
;对于我正在加载的每个功能。没有帮助。 (Related query on SO)
已将应用初始化代码移出deviceReady
(初始化不需要Cordova特定位)。
我是如何得出插件是瓶颈的结论?如下:
我卸载了应用所需的所有插件(其中23个!),加载时间缩短了2.5到3秒。所以我确信这是一个瓶颈。
此外,我删除了所有JS和CSS,包括cordova.js并加载了一个空白的HTML页面。有插件和没有插件。差异很大。
总体而言,问题是在插件的所有本机代码都没有运行之前,WebView本身不会出现。更多的插件,更多的时间是可见的。有没有办法让Cordova立即加载WebView并让JS在后台初始化插件时加载并在必要时触发deviceReady
?我可以在以后的某个时间做特定的Cordova。
相关:
答案 0 :(得分:2)
我同情你的目标,但你不能从turnip获得牛奶。
由于使用onload=false
的想法,<feature (...)>
已被弃用。按照底部的链接,阅读#12。
在另一个问题上,很明显提问的人并不知道这是不可能的。
所有Cordova / Phonegap平台的主UI查看器是一个名为WebView的库(在Android中,在其他平台上类似,see)所有这些库都有一个共同点,就是不加载,Javascript,或其他工具,使其成为一个完整的webbrowser。因此,Javascript必须启用(通过Cordova)并加载(由OS)。直到HTML文档的所有其他部分都被识别(但可能没有加载)才会发生这种情况;这包括CSS,字体,图像和图标(如果需要)。
然而,在后面的项目中,例如CSS,时间可以弥补 - 如果CSS被优化。很多时候开发人员不进行这种优化,因为需要提供一个里程碑(他们通常永远不会返回修复它)。
回到插件,确实需要一些时间来加载插件,但通常不清楚为什么插件需要太长时间。加载后的插件必须进行* some *初始化,但需要多长时间取决于插件。例如,地理定位(GPS)插件可能需要长达10秒才能获得可用的读数。
此外,我可以推测为什么有些插件花了这么长时间,但我不知道你在使用哪些插件;所以这将是徒劳的努力。
最后,有*可能*某种方法可以缩短启动和用户就绪之间的时间,但我听说没有,我没有看到。这包括我对Cordova,Phonegap,Android和Apple的iOS文档的阅读。
在您开发时,本文档可能非常有用 Top Mistakes by Developers new to Cordova/Phonegap