【问题标题】:How do you make a browser-based app without web server?如何在没有 Web 服务器的情况下制作基于浏览器的应用程序?
【发布时间】:2013-07-14 05:47:22
【问题描述】:

我们的团队与一家公司签订了合同,该公司出于安全原因设置了一些限制。我们在他们的办公室工作,我们工作中的电脑(由那家公司提供)受到他们的网络安全系统的监控,互联网也受到严密的监控。另外,excel、word、pdf、text等很多文件都是加密的。

我们共享一个 Excel 文件以跟踪我们正在进行的工作。此 excel 文件存储在公司专门授予我们访问权限的服务器中的文件夹中。

我们可以共享任何文件或数据的唯一管道是通过网络上只有我们可以访问的特定文件夹。

我的目标是制作一个基于浏览器的应用程序,该应用程序可以模仿在 excel 文件上所做的操作,但此应用程序的限制是,它不能是通过 Internet 发送数据并存储在外部的外部 Web 应用程序,并且我们不能将任何自己的物理计算机用作服务器,它们也不能为我们提供本地计算机来为 Web 应用程序提供服务。

我的问题是,是否有可能制作一个独立的基于浏览器的应用程序,可以在没有服务器的情况下运行,并且仍然能够将数据存储在 [nosql,sqlite,text file,json,etc.] 中,这多人可以同时访问?如果是,有哪些通常推荐用于此目的的工具?

非常感谢您的帮助,谢谢!

【问题讨论】:

  • 只有 HTML 和 JavaScript,浏览器不能简单地连接到其他浏览器。
  • 因此,您无法在您的机器或服务器上加载您的网络应用程序。如果我理解正确的话。你会把它放在哪里。您已经说过您无法访问外部。如果这一切都是真的,我会说不。
  • 谢谢你们的cmets。我只是想知道这是否可能。 @JoshuaWilson:应用程序将通过 LAN 存储在文件服务器中。
  • @ji 你需要像 tomcat 或 jboss 这样的 web 服务器。如果你可以安装其中任何一个,那么你就可以让它工作。
  • @JoshuaWilson 我看到除非计算机具有像 apache 或 nginx 这样的 HTTP 服务器,否则这是不可能的。不幸的是,即使托管我们的 excel 文件的计算机有任何 http 服务器,它们也不允许我们使用它来服务任何 Web 应用程序。

标签: web-applications


【解决方案1】:

虽然这个问题是很久以前提出的,但现在也感受到了它的相关性,以下是作为创建渐进式 Web 应用程序 (PWA) 开发的一部分现在可用的解决方案选项。

离线能力或离线第一思维是PWA的一个重要特性,PWA引入离线能力的方式是通过使用

  • 应用程序缓存/服务工作者在用户离线时管理您的应用程序。
  • 对于存储数据,您可以使用 Cache API、IndexedDB API、Web Storage API。这里有一个很有前途的 API localForage 是包装了 IndexedDB、WebSQL 或 localStorage,这使得它也与旧版浏览器兼容

解决问题的另一种方法是使用HoodieOffline First GitHub Organisation. 的免费和开源解决方案,它使用 CouchDB 和用 JavaScript 编写的 Node.js。

【讨论】:

  • Application Cache 现已弃用,许多浏览器不再支持。服务工作者将使用缓存 API。
【解决方案2】:

我想如果你想完成这件事,那么你需要开始锻炼你的政治技巧,让他们看到真正服务器的价值,这将有助于所有相关人员。您可以将其构建为仅供内部使用。

【讨论】:

  • 是的,似乎有这么多安全限制阻碍了我们的工作效率,并堵塞了我们团队与与该公司合作的团队之间的沟通渠道。有这么多任务只是在乞求自动化,但我不敢相信我们正在手动完成所有这些事情。感谢您的评论,我应该仔细考虑一下,并提出一个令人信服的计划来扩大这个瓶颈。
【解决方案3】:

这是一个我知道的老问题,但我发现这个问题很有趣。所以我想提出几个我认为可行的解决方案。

编写 html 和 javascript 来做你想做的事。将它们放在您的共享文件夹中(您不需要网络服务器,只需在浏览器中打开 html 文件)。

所以问题就变成了存储数据。

目前我看到了三种可能的解决方案。 1. 以 js 文件型数据库 taffyDB 为例。我不确定太妃糖如何处理多个连接,因为我从未使用过它。但如果它有效,那么这是一个不错的选择。

    1234563例子。 (似乎 derby 可能支持这一点,但在没有集中式服务器的多连接环境中支持它可能会很棘手。
  1. 第三个粗略的想法是实际使用文件并只写入数据。如果您依赖于想要存储某些内容的客户端锁定文件这一事实,这将起作用。但是,您必须对您的存储过程有所了解,可能是这样的。

    • 致电商店
    • 尝试锁定文件(等到解锁)
    • 从文件重新加载数据
    • 确保您不会覆盖自上次加载以来可能已存储的数据
    • 如果覆盖,提示用户验证覆盖是否正常或要求进行修改。
    • 商店。
    • 发布文件。

【讨论】:

    【解决方案4】:

    完全同意正确的答案是提出一个商业案例来证明您需要什么,这是一个仅在面向内部的 IP 上侦听的 Web 服务器/数据库。尤其是在上下文似乎异常限制的情况下。但是,为了好玩,我建议使用可以读取网络文件系统的 Electron 应用程序。毕竟,Visual Studio Code 只是一个 Web 应用程序 :)

    【讨论】:

      【解决方案5】:

      对于仍然感兴趣的人:我的建议是安装 Docker 引擎。 先决条件是 1. 访问 docker.io 或 dockehub 的互联网和一个 码头登记处。

      从 docker.io 的 apache 和/或 node.js 基础镜像构建一个 docker 镜像。 基本上将它作为一个容器运行,其中包含您的自定义 Web 应用程序。 瞧,你的桌面上有一个网络服务器。

      【讨论】:

      • 这并不能以任何方式解决“协同工作”方面的问题,尤其是在说“不可能将桌面用作服务器”之后。
      【解决方案6】:

      理论上,可以使用 WebRTC 创建"serverless" web applications,尽管 WebRTC 通常使用信令服务器来连接客户端。这对于在没有 Internet 连接的同一台机器上的 sharing data between two different browsers 可能很有用。

      【讨论】:

        猜你喜欢
        • 2016-01-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-07
        • 1970-01-01
        • 2019-07-25
        相关资源
        最近更新 更多