我试图找出一种方法来自动生成一个ApplicationCache清单文件从所有的超文本标记语言,CSS,JavaScript和图片文件,我们的网站使用。
我们需要这个,因为我们需要支持网站的离线使用。更准确地说,是JavaScript webapp的ArcGIS应用程序接口的离线使用。
我们没有使用服务工作者而不是ApplicationCache,因为支持iOS是一个关键需求,而且在任何浏览器上的iOS上都不支持服务工作者。
这个想法是,我将在站点完全加载后手动调用一个函数,该函数将动态创建用于新清单的文本。然后手动将其复制/粘贴到清单文件中。因此,只有当站点中的某些内容发生更改并且清单文件需要更新时,我才会这样做。
这个工具ManifestR非常接近:http://westciv.com/tools/manifestR/,但它有两个问题:
1-它不能正确处理在CSS文件中找到的图像文件URL。例如,如果它找到url( ../images/myimage.png ),它将直接在清单文件中添加相对链接../images/myimage.png,而不是像www.mysite.com/images/myimage.png那样添加非相对链接。
2-它没有列出任何通过dojo.require加载的脚本(AMD模块)。
我正在考虑使用类似的代码来修复这些问题并编译文件列表。我已经知道如何修复#1,但不知道如何修复#2。
那么,使用JavaScript,我如何才能找到网站使用的所有脚本URL的列表,不仅是那些通过标签加载的URL(在window.scripts对象中找到),还包括那些使用AMD模块加载的脚本URL?
基本上,我想编译与Chrome在源代码窗格中显示的网站列表相同的列表。
例如:
我在想,如果它在任何地方都不可用,也许我可以创建一个代理函数来跟踪所有通过dojo.require加载的文件。
但我想先问一下,也许我错过了一个脚本工具,它已经可以做到这一点?或者我的计划不好?
谢谢
发布于 2017-01-23 18:52:07
我从未在JavaScript应用程序的ArcGIS应用程序接口中使用过ApplicationCache,但我建议您首先使用a custom Dojo build of your application,以便将代码捆绑到一个或多个构建层中。如果您正确地配置了Dojo构建(这可不是一件小事),那么您应该知道所需的确切脚本。
此外,我怀疑一旦您弄清楚如何获得脚本列表,您可能会有特殊的考虑,以便使Dojo AMD加载器能够使用缓存的文件。请参阅:dojo and the offline application cache
祝好运。
https://stackoverflow.com/questions/41708392
复制