[英]Remove JS file and include another
我开始使用离线网络应用程序。 我有一个小的测试应用程序,它在脱机时使用localstorage进行简单处理,我的想法是,当它在线时,该应用程序使用php作为后端语言,并在连接恢复时同步localstorage和php。
现在,用于将数据保存到本地存储的功能不同于用于将数据发送到php的功能。
从动力学上讲,是否可以卸载一个JS文件(我们将其称为offline.js)并加载另一个(online.js)?
还是巫婆会是更好的方法? 我是否应该将所有功能都包含在一个文件中,然后动态更改侦听器?
如果浏览器处于联机状态,则应该具有“函数包装器”以启动IF条件检查。
例如:
function SaveData(data){
if(BrowserIsOnline)
SaveDataToPHPServer(data);
else
SaveDataToLocalStorage(data);
并以不同的方式处理每个功能主体。
您无法卸载javascript文件。 一旦加载,它将始终被加载。 您可能需要重新考虑一下您的设计。
在现代浏览器中,您可以使用navigator.onLine来检查连接。 规格如下: http : //www.w3.org/TR/offline-webapps/
var connection = navigator.onLine;
if( connection ){
//Do AJAX
}else{
//Do Local Storage.
}
这是一个可能有用的解决方案,您可能会发现...
在所有逻辑都驻留在其中的函数名称空间中,例如:
this.fn = {};
this.fn['save'] = function() {};
this.fn['load'] = function() {};
当事件触发时,您只需使用适当的函数即可,如下所示:
var fn = this.fn['load'];
要么
var fn = this.fn['save'];
然后像往常一样使用“ fn”。
您甚至可以按模块分隔功能,例如“ online.js”和“ offline.js”,其中每个模块将具有相同的功能名称,但绑定到其自己的名称空间。
当需要重新链接功能时,您可以执行以下操作:
this.fn['load'] = offlineModule.fn['load'];
如果您为所有函数都命名(例如:“ load”,“ save”),则可以将其循环使用。
上面的方法避免了所有“ if / else”条件分支,这些分支有时会变得烦人,而是尝试使用一种模式。
但无论如何,这都是一个很大的问题,因为我正在开始一个项目的计划阶段,因此我将需要与您在问题中所描述的内容类似的东西……到目前为止,这是我为此提供的最佳解决方案。 本质上是受Linux中SO的动态链接的启发。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.