渐进式网络应用程序(PWA)与 Electron 与浏览器扩展

2024-01-06

这个问题的背景是,我一直在开发一种我称之为工具的工具,用户可以在其中构建稍后可以运行的模块。它最初是一个小网页,在去年已经发展成为更类似于桌面应用程序的东西;但是,此时,仍然只是一组 html、css 和 js 文件。

我考虑过使用 Electron 之类的东西将其打包为可安装的桌面应用程序,但我不喜欢这种方法,并认为最好坚持使用渐进式 Web 应用程序之类的东西,因为一切都是离线完成的。

因为我想访问仅适用于 Web 扩展的 API,所以我在 MDN Web 文档上阅读了一些有关它们的内容,这让我对 PWA 和使用扩展页面来运行自己的页面/程序,而不是改变其他网页在浏览器中查看和使用的方式等?

如果一个人希望他们的应用程序能够离线工作并像桌面应用程序一样运行,那么将其作为浏览器扩展有什么缺点呢?我发现有关 PWA 的信息比有关浏览器扩展的信息更多,给人的印象是扩展不应该以这种方式使用。

其优点似乎包括访问更多 API,它使用自己的图标安装到浏览器中,并且可以更改扩展页面的窗口,使其看起来不像在浏览器内运行。

我是 stackoverflow 的新手,注意到问题有时会被关闭,因为它们被视为有争议的或寻求意见而不是事实。那么,更具体地说,您能否帮助我了解每种方法的优缺点和/或选择方法时应考虑的决策点?谢谢。

对答案/评论的回应

感谢您抽出时间回答我的问题。将问题扩展到包括电子是我想避免的事情,并在我的问题中提到它只是为了表明我已经广泛地审查了它并且不想开始关于它的另一次讨论。我的问题仅涉及 PWA 和浏览器扩展。

这个问题也与我的申请细节没有太大关系。它已经可以作为 PWA 存在。问题是,如果一个应用程序已经可以作为 PWA 存在,那么将其作为浏览器扩展会“不好”,或者不这样做的原因是什么。访问比 PWA 可用的 API 更多的 API,并将其安装到浏览器中,为其提供一个“家”,这似乎是一个扩展(由于缺乏更好的术语),比 PWA 的环境更优越。

MDN 网络文档上关于浏览器扩展的描述包括独立游戏,但似乎鼓励将游戏集成到浏览体验中(无论是什么)。我不是在构建游戏,而是想知道作为独立工具的扩展会出现什么问题。

一位评论者似乎认为,虽然可以这样做,但不应该这样做,因为扩展只是为了增强浏览体验。这也许是正确的看法。但是,另一方面,我有点喜欢在浏览器中添加一个图标的想法,该图标可以在没有浏览器菜单的窗口中打开我的应用程序(例如全屏运行网站),并允许我访问下载 API。这将为我的应用程序的用户带来更好的体验。

但可能还有其他原因不这样做,除了这不是扩展的目的,也不是它们在历史上的使用方式。会不会违反规则,让自己日后失败等等?或者,它只是为现有功能寻找另一种用途。

如果听起来是这样的话,我并不是想表现得粗鲁,只是想更好地澄清我的问题。谢谢。


浏览器扩展

这些本质上是用于扩展和增强用户的浏览体验。想想广告拦截器。它本身没有用。但有助于在您访问其他网站时阻止添加。用于截取屏幕截图的屏幕截图扩展。深色主题扩展,可在您访问的任何页面中翻转颜色。

PWA

PWA 应用程序将取代 Chrome 应用程序。 PWA 可以安装到所有主要桌面操作系统和移动操作系统的桌面上。它可以离线工作。它在硬件访问方面可以做什么取决于用户的浏览器版本..同样可以在这里检查 https://whatwebcando.today/。 Web 应用程序的所有限制仍然存在。

Electron

Electron 是一个用原生层包装的网络应用程序(有点!)。这也可以离线工作。事实上,它首先是离线的,因为所有 HTML/CSS/JS 组件都集成在 Electron 中,它还可以访问 API 并执行 PWA 可以执行的所有功能。 Electron 与 PWA 的主要区别在于其构建、分发和部署方式。 Atom 编辑器、可视化代码编辑器、Slack 是一些使用 HTML/CSS/JS 构建并使用 Electron 打包的著名工具。

用户计算机上的 PWA 功能由用户的浏览器版本决定,而 Electron 应用程序将有自己的运行时。所以不依赖于用户机器。这可能是您在决定选择哪一个时要考虑的关键因素。


您需要更具体地说明您想要在应用程序中实现/执行的操作。您所提到的只是“用户可以在其中构建稍后可以运行的模块的工具”。这根本没有提供任何见解。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

渐进式网络应用程序(PWA)与 Electron 与浏览器扩展 的相关文章

  • 使用 page_action 时不出现弹出窗口

    我是 Google Chrome 扩展开发的新手 我有以下两个疑问 我使用时没有出现弹出窗口page action在manifest json中 但在我使用时出现browser action 我想知道为什么 还是我做错了 该图标也显示为非活
  • 在 Google Analytics 中跟踪添加到主屏幕 Web 应用程序

    我有一个移动网络应用程序 其 添加到主屏幕 功能运行良好 我正在尝试确定如何使用 Google Analytics 来最好地跟踪已将应用程序安装到主屏幕的用户的应用程序使用情况 似乎没有默认方法可以在分析中查看应用程序是否处于独立模式 Go
  • Google Chrome 扩展:如何通过弹出页面上的 iframe 查看后台页面?

    我已经尝试了一段时间了 但无法让它发挥作用 基本上 当启用扩展时 我想要一个持久页面 无论是否单击浏览器操作图标 它都将保持套接字连接 后台页面就是这样发挥作用的 现在 我希望此背景页面显示在弹出页面中 通过 iframe 或任何替代方案
  • Chrome 扩展 - 使用 javascript 定期运行并永久记录数据

    目前 我有一个脚本 当单击右上角托盘中的图像 仅适用于一个特定允许的网站 时 它会扫描 HTML 页面 然后输出一些值 此扫描和输出是单个 JS 文件中的函数 称为 checkData js 即使用户没有主动使用选项卡但它已打开 是否有可能
  • 更改 Chrome、Firefox 或 IE 上的 navigator.platform 以测试操作系统检测代码

    如何在 Chrome Firefox 或 Internet Explorer 最好是 Chrome 上欺骗 navigator platform 的值 看起来过去在 Firefox 上是可以实现的 但现在已经不再支持了 这是为了测试网站上的
  • Firefox 扩展中的 localStorage

    我正在尝试从 Firefox 扩展访问页面的 localStorage 我的理解是content给出了参考window当前页面的 当我尝试访问页面的 localStorage 时content localStorage 我想我正在得到它的参
  • 对于某些文件,通过 NPAPI 浏览器的 Office 授权插件在 Chrome 中打开 webdav 文件失败

    好吧 这是一个棘手的问题 因为它涉及很多变量 一个 webdav 服务器 我使用了 webdav net 服务器 http www webdavsystem com server http www webdavsystem com serv
  • 如何使用谷歌应用程序脚本开发渐进式网络应用程序

    我使用 google app 脚本开发了一些应用程序 并将它们部署为 Web 应用程序 它们都工作正常 然后我决定将它们转换为 PWA 原因是让它们可以安装在智能手机用户的主屏幕上 能够使用推送通知 缓存等 简而言之 PWA 提供的所有优势
  • 如何动态且安全地设置XUL密钥?

    我正在尝试为我的引导附加组件动态创建一个关键元素 目前 我创建了一个keyset元素并将其附加到document getElementById mainKeyset parentNode with appendChild 然后创建key元素
  • 编辑现有的 Firefox 插件

    对于我正在从事的项目之一 我必须使用 DOM Inspector 来调试 Firefox 扩展 DOM 检查器的问题在于 它只向您显示代码下方的浏览器 无法分离浏览器或并排显示代码部分或浏览器 它对我不起作用 因为我正在调试的插件有一个很大
  • Service Worker 对 CSS 的响应时间较慢

    我们在 sw toolbox 之上编写了 Service Worker 一旦静态资源被缓存 Service Worker 就会花费更长的时间 特别是下载 css 资源 30 100 毫秒 而对于 js 资源 时间几乎为 0 CSS 加载时间
  • Chrome 扩展程序可以相互通信吗?

    我正在编写一个Chrome扩展程序 并且想要实现一个接口或api 以便我将来制作的其他扩展程序可以使用它 最终的效果可能如下 分机 B 呼叫extensionA someMethod someParameters 并向分机A发送一些数据 分
  • sendResponse 不等待异步函数或 Promise 的解析[重复]

    这个问题在这里已经有答案了 我遇到了异步问题 我相信 sendResponse in 内容脚本 js不等待getThumbnails 回来 我正在发送一个message in popup js chrome tabs sendMessage
  • 如何在 Firefox 控制台中访问附加内容脚本?

    我为 Firefox 和 Chrome 开发了一个插件 它有内容脚本 我想在浏览器选项卡的控制台中访问它们 在 Firefox 上网页控制台 https developer mozilla org en US docs Tools Web
  • DOM 解析器 Chrome 扩展内存泄漏

    问题 我开发了一个扩展程序 可以拦截 Web 请求 获取 Web 请求来源的 HTML 并对其进行处理 我使用 DOMParser 来解析 HTML 并且意识到 DOMParser 正在导致大量内存泄漏问题 最终导致 chrome 扩展崩溃
  • 如何保护 Chrome 扩展

    Chrome 扩展程序被打包为 zip 存档 设置完成后 它将安装在文件夹中 用户可以访问它 他还可以重写扩展 甚至克隆到新的扩展 如何保护扩展免受用户修改和克隆 我发现了 dll 文件的可能性 可以编译 但它不是很好 如果您有一些专有代码
  • Chrome + 另一个进程:进程间通信比 HTTP/XHR 请求更快?

    我有一个进程 1 对视频流进行实时图像处理 我需要在 Chrome 中的 HTML 页面中渲染该视频 同一台计算机上的进程 2 在canvas or img or videoHTML5 元素 由于我有 1000x1000 像素 x 3 字节
  • 如何为 pageAction 添加点击?

    第一次延期 请友善 我的目标是在用户访问来自特定域的页面时提供一个选项 以提供启动另一个页面的选项 该页面使用所访问页面的域名的一部分作为变量 下面的代码执行了我想要的操作 但它没有提供该操作作为选项 它只是执行 当访问与域匹配的页面时 它
  • Chrome 内联安装扩展无法正常工作

    我正在尝试使用新的 chrome 内联安装功能进行扩展 请参阅此处 http code google com chrome webstore docs inline installation html http code google co
  • 阻止 Chrome 扩展程序的 popup.html 自动打开

    我正在创建一个 Chrome 扩展程序 其中包含background html每分钟从 API 请求一次信息的文件 收到信息后 它会发送消息popup html弹出窗口使用 JSON 信息将新的 HTML 元素附加到弹出窗口的主体上 问题是

随机推荐