如何设计 Web 应用以允许多个存储提供程序

How to design a web app to allow for multiple storage providers?

本文关键字:存储 许多个 程序 Web 应用      更新时间:2023-09-26

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

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

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

谢谢你的时间!

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

> 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非常灵活,并且有无数种排列来做到这一点。这只是你可以走的一种方式。