使用 Angular JS 的离线 Web 应用程序,Twitter Bootstrap

Posted

技术标签:

【中文标题】使用 Angular JS 的离线 Web 应用程序,Twitter Bootstrap【英文标题】:Offline Web App using Angular JS , Twitter Bootstrap 【发布时间】:2014-11-21 13:42:14 【问题描述】:

我是混合移动编程的初学者。

我们的要求是构建一个可以在笔记本电脑/台式机上运行的离线 Web 应用程序,并最终使用 PhoneGap 框架使该应用程序在平板电脑/智能手机上运行。

我们决定使用 AngularJS 、用于 UI 框架的 Twitter Bootstrap 和使用 .Net 作为 Web 服务器的 Rest API。

我们最关心的是网络应用在离线模式下要存储的数据大小。 html5 Web 存储有 5 MB 的限制,不推荐使用 HTML5 Web SQL 数据库。我们将使用 PhoneGap SQLLite 数据库在平板电脑/智能手机中进行离线存储。

我的问题如下:

1) 如何评估需要存储在 HTML5 Web Storage 中的数据库行(数据)的大小?

2) 假设数据大小超过 5MB,那么在离线模式下为 Web 应用存储数据的替代选项是什么?

【问题讨论】:

【参考方案1】:

您应该查看 IndexDB,它允许您请求需要多少空间。有一个 shim 也可以在 WebSQL 上运行,以防万一您在 safari 上运行。

http://www.w3.org/TR/IndexedDB/

我可以使用信息http://caniuse.com/#feat=indexeddb

在电话间隙下,我不确定存储限制是否相同,但我不使用此功能,因此无法确认。但我怀疑这会限制设备在应用程序上的位置。

如果 PhoneGap 的 WebSQL 接口映射到 SQLLite 引擎并且不依赖于操作系统浏览器的实现,那么使用 IndexDB 将与 shim 一起工作,因此无需为设备编写特殊代码。 (不过我强烈建议尽早测试!)

【讨论】:

我将研究 indexedDB。但是,我想评估数据库中的数据大小是否远低于 5 MB。可以使用什么方法来查找存储在 HTML5 Web Storage 中的数据库中的数据是否消耗少于 5 MB 的存储空间。我是否要编写 POC,在 HTML5 Web Storage 中保存数据库行并找到数据大小,乘以最大数据行数? 别忘了,如果需要,您也可以使用压缩。 在决定选择 Offline Web Storage 之前,我想评估一下我们数据库中的数据大小。你能建议我这样做的方法吗?一旦我评估了数据的大小,我可以在需要时使用压缩技术。我的首选是使用 Web Storage。 最容易实现的是使用 JSON 并检查字符串长度。尽管这取决于您的日期,但这不一定是最佳解决方案。 我相信我需要编写一个程序来从数据库中获取数据,将其存储在本地存储中,然后使用 alert(1024 * 1024 * 5 - unescape(encodeURIComponent( JSON.stringify(localStorage))).length);【参考方案2】:

我相信我需要编写一个程序来从数据库中获取数据,将其存储在本地存储中,然后使用 storage 评估存储的大小

 alert(1024 * 1024 * 5 - unescape(encodeURIComponent(JSON.stringify(localStorage))).length); 

【讨论】:

以上是关于使用 Angular JS 的离线 Web 应用程序,Twitter Bootstrap的主要内容,如果未能解决你的问题,请参考以下文章

神奇的HTML5离线存储(原理)

采集→清洗→处理:基于MapReduce的离线数据分析

Service Worker 无法在节点 js 服务器的离线模式下工作

创建一个自包含的离线 HTML5 应用程序以及嵌入其资源的最佳方法

使用 index.html 离线运行 Angular 7 Web 应用程序

关于 SAP Fiori 应用的离线使用