我们有一个使用 Dojo 的 PhoneGap 移动项目。在给定的 HTML 页面中,例如 index.html,我们将有一个类似于以下的 JavaScript 标记:
<script>
require(["path/to/myApp", "dojo/domReady!"], function(MyApp) {
new MyApp().startup();
});
</script>
path/to/myApp.js 将是一个执行必要功能的类,例如:
define(["dojo/_base/declare",
"dojox/mobile/deviceTheme",
"dojox/mobile/compat"],
function(declare) {
return declare(null, {
startup: function() {
// create and display views etc.
}
});
});
我们正在尝试按照以下方式实现自动更新功能:
- 启动时,使用 AJAX 与服务器检查客户端应用程序版本是否是最新的。
- 如果客户端已过期,请根据需要向客户端发送新的 JavaScript(和/或 HTML、CSS)。
- 客户端将 JavaScript 存储在设备的本地存储中。
鉴于此方案,在启动时,客户端将从本地存储读取 JavaScript 并执行该代码,替换 path/to/myApp.js。我正在努力将其与 Dojo 的“要求”AMD 功能联系起来。我想我仍然需要使用 Dojo 加载程序来解决依赖关系等。
据我所知,Dojo 加载器使用“require”来定位一个 DOM 节点,然后添加一个“script”标签,最后将 script 标签的“src”属性设置为“path/to/myApp. js”(在本例中)。我需要一种方法来更改此行为,以运行更新后的 JavaScript,该 JavaScript 现在是从设备上的本地存储中获取的。这将使我们能够从服务器自动更新我们的应用程序,而无需重复重新部署到应用程序商店以进行错误修复等小事。