0

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

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

他们的已知模式是可以使用的还是已经可以使用的 javscript API?我的设计思路是正确的还是有更好的方法?

谢谢你的时间!

4

2 回答 2

1

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

于 2013-11-01T07:09:57.420 回答
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 非常灵活,如何做到这一点有无数种排列方式。这只是你可以走的一种方式。

于 2013-11-03T21:39:21.893 回答