离线便携式网络应用程序,Javascript。如何跨计算机获取持久数据库?

Posted

技术标签:

【中文标题】离线便携式网络应用程序,Javascript。如何跨计算机获取持久数据库?【英文标题】:Offline portable web app, Javascript. How to get a persistent database across computers? 【发布时间】:2016-06-07 10:31:34 【问题描述】:

我有一个带有 javascript 的 PC 离线网络应用程序,我希望向它添加一个数据库。问题是它需要跨多台计算机(通过 USB)进行持久数据存储。所以我想找到一种方法将这些数据存储在 USB 上而不是计算机的硬盘上。

我研究了诸如lokijs 之类的解决方案,虽然 lokijs 确实具有持久存储,但它存储在 Local Storage 或 IndexedDB 中。这意味着它通过浏览器存储在计算机上。解决此问题的一种方法是使用 JavaScript 以某种方式读取/写入文件,或者将数据库文件保存在与其他文件相同的目录中(通过 USB 进行移植)。有没有办法做到这一点?据我所知,没有办法实现这一点。

另一种解决方案是下载 portable version of Chrome 并创建一个 .bat 文件,以确保使用便携式 Chrome 打开网络应用程序。我认为(不太确定)便携式 Chrome 将在会话之间保留本地存储/索引数据库数据。但是,这种方法很笨重,我宁愿不依赖它。

那么,有没有办法解决这个问题呢?或者是否有另一个 JavaScript 数据库可以在本地存储和检索数据库,以通过 USB 实现跨多台计算机的持久数据存储。

感谢您的阅读,如果有任何答案,我将不胜感激。

【问题讨论】:

【参考方案1】:

出于安全原因,Javascript 无法访问您的磁盘。您不能使用 Web 应用程序读取/写入本地驱动器,否则恶意软件会更容易传播。这就是像 lokijs 这样的解决方案使用浏览器内存储的原因。如果您想要一个可以从 USB 运行的具有便携式存储的离线应用程序,我会考虑使用不同的技术/编程语言进行重写。如果还需要跨平台,Java 可能是您最好的选择。

【讨论】:

感谢您的回答和建议。我肯定会按照您和 meskobalazs 的建议研究其他技术。【参考方案2】:

基本上,您需要一个使用 Web 技术构建的可移植的胖客户端应用程序。有多种解决方案。我建议使用 NodeWebKit 或类似的东西(JavaFX 也具有使用 JavaScript 的 Web 渲染功能)。

【讨论】:

感谢您的回答和建议。如果您不介意,您对Electron 与您提到的NW.js 有何看法? 我不太了解,但绝对值得一看。

以上是关于离线便携式网络应用程序,Javascript。如何跨计算机获取持久数据库?的主要内容,如果未能解决你的问题,请参考以下文章

最全面的百度地图JavaScript离线版开发

如何在 GWT 离线应用程序中包含外部 Javascript

渐进式网络应用 OCR SDK (JavaScript)

网络通信与便携式应用驱动SRAM技术发展

Chrome 在离线时禁用按钮和输入元素

安卓手机如何设置wifi热点?