我将与Ionic,Angular和Cordova一起构建混合移动应用程序,并将其移植到Android和iOS。该应用程序的主要功能之一是离线存储/能够离线存储和查看应用程序内容。
我想要保存在本地数据库中的内容甚至可能超过50MB,因此本地存储不是一种选择。
到目前为止,我找到了sqlite和indexdb。但我想知道你们中是否有人有过类似问题需要解决的经验,可以提出其他一些选择吗?或者也许哪个选项(sqlite或indexdb)将是我的应用程序的更好的解决方案?
答案 0 :(得分:3)
如果您打算为iOS构建,您还应该知道localStorage不是永久设备存储的可行选项。当设备内存不足时,操作系统将清除localStorage数据。 IndexDB也可能是易变的,因为它存储在webview的上下文中。
我开发了一个Ionic应用程序,它在SQLite中存储了一些数据(目前不是很多)。我选择了带有SQLite驱动程序的localForage。它适用于我需要的东西,因为它将数据存储到文件系统中的数据库文件中,这样可以安全地删除操作系统。有趣的是,这些功能与localStorage相似;最大的区别是功能使用promises。
这是我用来实现我现在所拥有的组件堆栈:
Bower组件
您还需要Cordova-sqlite-storage插件。
答案 1 :(得分:2)
我是一个团队的成员,该团队构建了一个成功的Cordova / Sencha Touch(UI框架在这里并不重要)/适用于iOS和Android的SQLite应用程序。我们有超过100Mb的数据要存储在数据库中,必须对其进行加密并将其从服务器传输到应用程序中。
SQLite表现良好,我们还使用了一些我们编写的自定义函数来将我们需要的一些数据运算移到数据库引擎和Javascript之外。
团队的另一名成员写了一篇short blog article关于我们对这个堆栈的一些经验。
总的来说,根据我的经验,我说SQLite是一个合理的选择,但我没有使用IndexDB的经验。
答案 2 :(得分:2)
您还可以查看LokiJS和PouchDB(来自“GoneHybrid”的博客文章,实现这两个库)。
我个人会去LokiJS(http://lokijs.org/)及其JSON文件,即使它们都有适用于WebSQL,SQLite,IndexedDB的适配器。