如何设计一个允许多个存储提供商的Web应用程序?

时间:2013-10-31 14:38:42

标签: javascript cordova google-chrome-app

我有一个PhoneGap移动网络应用程序,它在iOS,Android和BlackBerry上使用存储(SQLite)。相同的代码适用于所有平台。不过,我还想使用相同的网络应用创建Chrome应用。我将需要解耦代码的存储部分,因为Chrome的存储API是完全不同的。

我的想法是创建一个单独的存储API接口,Web应用程序将使用该接口来访问PhoneGap存储和Chrome存储。

他们已知的模式可以使用吗或javscript API已经这样做了吗?我的设计思路是否正确或是否有更好的方法?

谢谢你的时间!

2 个答案:

答案 0 :(得分:1)

您可以将Chrome Cordova插件用于chrome.storage.local API,该插件适用于IOS和Android中的Cordova应用以及桌面上的Chrome应用。您可以在此处找到更多信息:https://github.com/MobileChromeApps/mobile-chrome-apps/blob/master/docs/APIStatus.md https://github.com/MobileChromeApps/mobile-chrome-apps

答案 1 :(得分:1)

Sriram谈到了一种不同的方法,可能会使您对抽象接口的需求无效,这是您应该首先考虑的问题。我会回答你的直接问题。

您的设计思路似乎合理有效。这在Javascript中非常简单易用 - 比其他语言更容易 - 但它总是让我觉得不安全。

Javascript不是静态类型的。这意味着您可以使用抽象接口,但不需要在任何地方声明/定义它。只要具体实现实现了所有正确的功能,你就可以了。

作为一个具体的例子,你可以这样做:

主文件:

var gStorage = null
initStorage();
gStorage.load();
....
gStorage.save();

应用存储实施:

var gAppStorage = {};

gAppStorage.load = function() {
  ...
}

gAppStorage.save = function() {
  ...
}

function initStorage() {
  gStorage = gAppStorage;
}

与您想要的任何其他存储提供商类似。然后,您只需要在应用程序中包含要使用的提供程序的js,它应该可以正常工作。

Javascript非常灵活,并且有无数种如何做到这一点的排列。这只是你可以采用的一种方式。