修改 Cordova 插件加载行为以加快加载时间

Posted

技术标签:

【中文标题】修改 Cordova 插件加载行为以加快加载时间【英文标题】:Modify Cordova Plugin loading behaviour to speed up load time 【发布时间】:2015-10-24 10:46:06 【问题描述】:

我正在寻找一种方法来加快 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 特定的事情。

相关:

    Showing webView in Cordova before API has loaded phonegap plugin onload=false has no effect

【问题讨论】:

你有什么运气吗?我正在考虑如何实现类似的目标。 不。好久没用Cordova了!对不起。 :) 【参考方案1】:

我同情你的目标,但你无法从turnip 获得牛奶。

考虑到使用onload=false<feature (...)> 已被弃用。点击底部的链接,阅读#12。

关于另一个问题,很明显提出问题的人不知道这是不可能的。

所有 Cordova/Phonegap 平台的主要 UI 查看器是一个名为 WebView 的库(在 android 中,在其他平台上类似,see)所有这些库都有一个共同点,即不加载、javascript 或其他使其成为成熟的网络浏览器的工具。因此,必须启用 Javascript(由 Cordova)并加载(由操作系统)。在 HTML 文档的所有其他部分都被识别(但可能没有加载)之前,这不会发生;这包括 CSS、字体、图像和图标(如果需要)。

但是,对于后面的项目,例如 CSS,可以弥补时间 - 如果 CSS 已优化。很多时候,开发人员没有进行这种优化,因为需要交付一个里程碑(而且他们通常永远不会回来修复它)。

回到插件,加载插件确实需要一些时间,但通常不清楚为什么插件需要这么长时间。加载后的插件确实必须做*一些*初始化,但需要多长时间取决于插件。例如,地理定位 (GPS) 插件可能需要长达 10 秒的时间才能获得可用的读数。

加载时间 尝试调整加载时间几乎没有用处,因为无论插件如何,插件都需要加载它需要的内容。 初始化时间 尝试调整插件的内部结构是您应该与作者讨论的问题。

另外,我可以推测为什么某些插件需要这么长时间,但我不知道您使用的是哪个;所以这是徒劳的。

最后,*也许* 有一些方法可以缩短 启动user-ready 之间的时间,但我没有听说过,也没有见过。这包括我对 Cordova、Phonegap、Android 和 Apple 的 ios 文档的阅读。

本文档在您开发时可能会很有用Top Mistakes by Developers new to Cordova/Phonegap

【讨论】:

对不起,我忘记告诉别人了。 iOS9 是not officially support

以上是关于修改 Cordova 插件加载行为以加快加载时间的主要内容,如果未能解决你的问题,请参考以下文章

如何延迟或异步此 WordPress javascript 片段以最后加载以加快页面加载时间?

Cordova 插件无法加载

为啥所有 Cordova 插件都无法在 iOS 上加载?

cordova加载层进度条文件选择插件

如何让 TypeScript 加载包含在 cordova 插件中的类型

为啥 angular/cordova 应用程序突然重新加载?