问题标签 [lawnchair]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 每次保存时,通过 Lawnchair 建立的 IndexedDB 都会变大
我在我正在构建的针对 iOS、Android 和 Windows 手机的移动应用程序上使用 Lawnchair.js。我的问题是我有一个相对简单的函数(见下文),它从对象中读取数据并将其保存在 indexeddb 数据库中。大约有 4MB 的数据,当我在 Internet Explorer 中检查时(通过 Internet 选项),第一次运行时,我可以看到数据库大约是 7MB。如果我重新加载页面并使用相同的数据重新运行相同的功能,它会增加到 14MB,然后是 20MB。我使用相同的键,所以我的理解是这应该只是更新记录,但几乎就像每次都插入所有新记录一样。我在使用 websql 适配器的移动 safari 上使用 Lawnchair 也有类似的行为。有没有人见过这个或有任何关于为什么会这样的建议?
以下代码来自我用来填充数据库的函数。
MasterData 是大型数据文件,itemInfo 包含键名、稍后用于检查 api 更新的哈希值以及更新位置的相对 url。创建数据库后,我将其传递给此函数,然后如果插入成功则返回 true,否则返回 false。
如前所述,我在 iOS 中看到了类似的问题,调用 database.save() 分配了大量内存但没有释放它,如果它填充数据库然后尝试更新一些记录,最终会导致崩溃。从等式中删除 Lawnchair 可以防止它崩溃,但在保存数据时它仍然分配大量内存。不确定这对于移动设备上的持久存储是否正常,Lawnchair 中的错误,或者我是一个菜鸟并且做了一些非常错误的事情,但我可以使用一些指针以及为什么 indexeddb 在每次保存时都会变得越来越大(至少在 IE10 的初始测试期间)??
编辑:索引数据库适配器的源代码在这里: https ://github.com/brianleroux/lawnchair/blob/master/src/adapters/indexed-db.js
这是我正在使用的保存功能的代码:
创建新实例时,Lawnchair 使用 indexed-db 适配器中的 init 函数,如下所示。
javascript - 用javascript连接对象数组
我正在接受用户的问题并使用 Lawnchair 将它们保存在 DOM 中。声明的第一步
用户可以输入QuestionText
, Choice
,NextQuestionID
然后点击保存。然后每个问题都转换为以下格式
并保存
保存第一个问题后,用户将输入下一个问题。上述方法工作正常,但我需要以不同的方式保存。假设用户保存 3 个问题,我想以以下格式存储,以便我可以轻松访问问题。
所以我的问题是如何保存每个问题将保存在问题属性下的问题。
提前致谢。
json - 我应该使用 Lawnchair 还是 localForage 来离线维护数据
我正在使用 Ionic 框架编写应用程序。我使用 mongodb 作为云中的数据存储,但列表过于全面,会降低应用程序的速度。在花费数百万小时阅读有关客户端存储的信息后,我仍然没有明确的答案。
我希望有可能从客户端提供这些全面的 json 文件,这是 ios + android + windows 手机,但没有“服务器”来提供服务,这个想法似乎是一个愚蠢的想法。不知道我对 Angular 中其余 API 的有限理解是否有问题,但从逻辑上讲,这个想法没有意义。
查看本地 sql 客户端,我调查了 sqlite。由于在这些不同平台(ios + android + windows phone)上的 sqlite 实现会很痛苦,我查看了不同类型的浏览器缓存。
我不想详细介绍,但 localstorage 对于我的结构来说很简单,并且其他选项不被支持或弃用。一团糟。但是,我发现关于离线数据解决方案的两个选项是 Lawnchair 和 localForage。
这两者之间有什么区别,因为它们提供了基于客户端的最全面的解决方案。任何愿意提出更好/更差选择的人。
然后是我也想使用应用程序缓存缓存的站点文件,但我不确定如何缓存,因为我使用的是https://www.npmjs.org/package/generator-ionic方式。
javascript - 草坪椅 json 商店删除记录
我在 Cordova 创建的应用程序中使用 Lawnchair。我在删除记录时遇到了不稳定的问题,即,我编写了删除第一条记录的代码,但第二条记录被删除了,或者我得到了 Uncaught TypeError: Cannot set property 'key' of undefined。有没有人遇到这个问题或者我做错了什么。如果您运行下面的脚本并尝试以不同的顺序删除记录,则会出现问题。任何帮助,将不胜感激。谢谢。
javascript - Lawnchair-0.6.1 js:关闭和重新打开浏览器之间的数据不持久
我使用的是 Firefox 32.0 版和 Chrome 36.0 版。我想将 Lawnchair 用于客户端的持久json 数据存储。我创建了一个 HTML 来试用它,如下所示:-
当我在两个浏览器中打开这个 HTML 文件(位于 IIS 开发服务器上)时,它显示计数 1 并在刷新时增加它。但是,在关闭和重新打开浏览器时,它会再次从 1 开始计数器。
我想使用这些数据,不仅在创建它的文件中,而且在同一域/子域上托管的其他文件中。
谁能告诉我如何拥有持久的客户端数据存储?
cordova - How Can I pass data between html files not technically on the same domain with phonegap?
EDIT - 8-15
To Refine my questions down:
1.) Can I pass data between two webviews within the same app using localStorage? If not is there a better solution?
2.) Can I use localStorage between a remote domain and local android files? If not is there a better solution?
3.) Does localStorage use cookies? Is this the same as the DOM adapter? I've seen a lot of explanations, some seem contradictory so I think I'm a bit confused about what is actually going on.
I'm creating a mobile application using phonegap and apppresser. Essentially, it is just a webview and I have two versions, and online and offline. The online version is sent to www/index.html which then redirects them to my live site. The offline version is assets/offline.html and I am going to make it appear similar to the online version so the user doesn't really know anything is inherently different other than they can no longer do online functions.
Long story short, I am trying to use lawnchair as I've only seen good comments about it and it seems pretty flexible. Let me preface this with lawnchair seems to work. I have tried the dom adapter and can successfully set and retrieve data between pages on the online version, but it does not seem to be able to be retrieved on the the offline version. The code I have used to successfully do this is below:
and I used a slightly different variation for the offline version that doesn't save any data. So it kind of boils down to a few questions:
1.) Does lawnchair allow me to persist data on the same mobile application between domains in the webview? I'm not sure what domiain offline.html would be on, but technically index.html (the online version) is setting data on mydomain.com
2.) Is there a better technology I should be using in this scenario to persist data between html files and/or domains?
javascript - Lawnchair:检查商店及其文件是否存在
我创建了一个 Lawnchair 商店并保存了它。请参阅以下代码:
这里 res 是一个 javascript 对象,它是被存储的数据。
但是当我下次关闭并重新打开网页时,我想检查这家商店是否存在。如果商店存在,我想检查这个文件是否存在。如何进行这些检查?
谢谢
PS - 有什么好的资源可以让我学习 Lawnchair 吗?
html - Phonegap - 从数据库中离线访问数据
我的服务器端有多个表,我需要从中获取数据并将其存储在客户端Phonegap上,以便可以脱机访问。
我找到了 Lawnchair,但我找不到足够的文档来保存和更新多个表格。
还有WebSQL,但我相信它已被弃用。(如果我错了请纠正我)
仅当设备在线连接时,如何获取新数据/当前数据才能更新?!换句话说,任何操作都会对保存在设备上的数据进行。
local-storage - 如何将大型 (2Mb) 数据集存储在持久性本地存储中?
我正在从 Firebase 数据库中检索大型活动的参与者列表 - 大约 4,000 名参与者。每个都表示为大约 500 字节的 JSON 对象。
检索数据集后,我试图将其存储在持久的本地存储中。最初,我尝试使用 Lawnchair.js 使用标准 DOM 存储(localStorage)。
我观察到的是,在使用这种方法插入数据集时,Chrome 的内存使用量上升到大约 2GB。此外,由于保存到 localStorage 是同步的,这会阻塞 DOM,并且应用程序会在 30 秒内无响应。
我认为这可能是 Lawnchair 问题,所以我现在尝试使用 IndexedDB 切换到 localForage。这有两个很大的改进:
- localForage 是异步的,因此应用程序保持响应
- 内存使用量根本没有攀升
但是,将数据写入索引数据库大约需要10 分钟。前 5 分钟,CPU 处于 30% 左右,没有任何内容写入索引数据库。最后 5 分钟 CPU 停机,写入速度缓慢(可能 10 条记录 / 秒)。
因此,我的问题是:这些行为是否正常,如果是,我怎样才能将这些数据(大约 2Mb)存储在持久的本地存储中,而不需要花费很长时间或消耗大量内存?