我有一个PhoneGap移动网络应用程序,它在iOS,Android和BlackBerry上使用存储(SQLite)。相同的代码适用于所有平台。不过,我还想使用相同的网络应用创建Chrome应用。我将需要解耦代码的存储部分,因为Chrome的存储API是完全不同的。
我的想法是创建一个单独的存储API接口,Web应用程序将使用该接口来访问PhoneGap存储和Chrome存储。
他们已知的模式可以使用吗或javscript API已经这样做了吗?我的设计思路是否正确或是否有更好的方法?
谢谢你的时间!
答案 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非常灵活,并且有无数种如何做到这一点的排列。这只是你可以采用的一种方式。