与 Electron 相比,Chrome 应用程序有哪些优缺点?

2024-02-18

我想用 javascript(使用网络技术)编写一个桌面应用程序,并寻找 Electron 和 Chrome 应用程序之间的比较。

我需要的一切似乎都可以通过 Chrome Apps 实现,但是 Electron/NW.js 周围有很大的宣传。电子有什么优点?是不是Node包太多的原因?

我认为功能差异对我来说很清楚。

优点和缺点如:

+ Chrome Apps can run on Chrome OS  
- Chrome Apps needs an installed Chrome Browser
...

2016 年 8 月 20 日更新:

正如爱德华多指出的那样,谷歌宣布 http://blog.chromium.org/2016/08/from-chrome-apps-to-web.html他们将停止在除 ChromeOS 之外的所有平台上使用 Chrome 应用。所以我认为这个问题的答案现在已经很明显了。

对于所有开发了 Chrome 应用程序并有兴趣将其迁移到网络的人,这里有一份来自 Google 的指南:https://developers.chrome.com/apps/migration https://developers.chrome.com/apps/migration

或者,正如谷歌也提到的,你将它迁移到Electron http://electron.atom.io/ or NW.js http://nwjs.io/.


您可以完全比较 Electron 和 chrome 打包的应用程序。他们非常相似。对于他们两个,你会得到:

  • 使用网络技术开发您的桌面应用程序
  • 应用程序在 Chrome 之上运行
  • 自动更新。虽然在 Chrome 中你可以免费获得它,但对于 Electron 你需要做一些工作。
  • 操作系统集成 - 两者都比普通网站与操作系统有更好的集成,但 Electron 支持更广泛的操作系统集成。
  • 离线或在线工作。
  • 两者都可以在 Linux、OSX 和 Windows 上运行。 Chrome 网络应用程序也适用于 Chromebook。

以下是差异:

  • Electron 使用 Node.js。因此,您可以导入许多在 Chrome 应用程序中不易使用的模块。
  • 分发,使用 Electron,您可以自己打包和分发应用程序。使用 Chrome 应用程序,您可以通过 Chrome 网上应用店分发它们。
  • 环境。 Electron 应用程序与其完整的环境打包在一起。 Chrome 应用程序仅使用 Chrome 环境,因此它们更轻量级,但对于不同的用户来说,其行为可能会有所不同,具体取决于他们使用的 Chrome 版本。
  • Chrome 应用程序要求用户安装 Chrome,而 Electron 则不需要。
  • Electron 拥有更好的测试和调试开发工具。
  • Electron 是一个开源平台。 Chrome Apps 也建立在多种开放技术之上,但具体分发由 Google 控制。
  • Electron 文档要好得多,尽管它是一个年轻得多的平台。
  • 采用:有很多大型且成功的应用程序构建在 Electron 之上,例如 Visual Studio Code、GitHub 客户端、Slack。 Chrome 应用从未获得如此大的发展势头。
  • Chrome 应用程序可以紧密集成到 Google 云端硬盘中

2016 年 8 月 19 日更新:

Google 最近似乎在 ChromeOS 之外的任何平台上弃用了 Chrome 应用。所以我想说这不再是一个有效的选择。

http://blog.chromium.org/2016/08/from-chrome-apps-to-web.html http://blog.chromium.org/2016/08/from-chrome-apps-to-web.html

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

与 Electron 相比,Chrome 应用程序有哪些优缺点? 的相关文章

  • jQuery mobile 中的文本区域高度和宽度?

    我修复了 jQuery mobile 中文本区域元素的高度 并且在纵向中得到了完美的高度和宽度 但在横向中宽度没有放大 谁能帮我 提前致谢 HTML
  • 在 HTML5 Javascript 中将 BlobBuilder 转换为字符串

    function blobToString blob var reader new FileReader var d reader onloadend function d callback reader result console lo
  • JavaScript 添加布尔值

    console log true true 2 console log typeof true true number console log isNaN true true false 为什么两个布尔类型相加会产生一个数字 我有点理解 如
  • jQuery .push 到 .get 调用中的数组给出空结果

    谁能告诉我为什么下面给我一个空字符串 当我console log contentArray in the get 回调函数它显示数据 但是当我尝试在下面的代码中执行它时 结果为空 sectionArray contentArray func
  • Number.IsNaN() 比 isNaN() 更糟糕吗

    Soooooo isNaNJavaScript 显然被破坏了 比如 isNaN isNaN isNaN true isNaN false isNaN 0 返回 false 当它们看起来都是 不是数字 在 ECMAScript 6 中 草案包
  • 想要动态处理与分页相关的页码显示:ReactJS

    我有一些分页逻辑工作得很好 唯一的问题是我只能让它显示并固定数量的页面可供选择 现在我已经把它放到了 5 页 但我希望它能够根据总记录动态更改 假设我有 100 条记录 每页限制为 10 条 将有 10 页 现在我只能让它以这种方式显示 第
  • JavaScript 中的 Promise 有什么意义?

    一个承诺是一个 可能现在可用 或将来可用 或永远不可用的值 来源 MDN 假设我有一个想要处理图片的应用程序 图片已加载 例如在算法在后台使用它之后 或某种其他类型的延迟 现在我想检查一下图片是否可以在future 通过使用承诺 而不是回调
  • JavaScript推送函数中的动态变量

    我在 JavaScript 中使用推送功能 var chartData for var i 0 i lt 3 i chartData push date new Date year s mon s date s hr s min s sec
  • 将 Firebase 云消息传递与 Windows 应用程序结合使用

    我在 Android 和 iOS 应用程序中使用 Firebase Cloud Messaging 但是我还有此应用程序的 Windows Mac OS 版本 我想保留相同的逻辑 我知道 Firebase Cloud Messaging 可
  • 如何正确取消引用然后删除 JavaScript 对象?

    我想知道从内存中完全取消引用 JavaScript 对象的正确方法 确保删除时不会在内存中悬空 并且垃圾收集器会删除该对象 当我看这个问题时在 JavaScript 中删除对象 https stackoverflow com questio
  • 如何计算特定字符在字符串中出现的次数

    我正在尝试创建一个函数来查看数组中的任何字符是否在字符串中 如果是 有多少个 我尝试计算每一种模式 但是太多了 我尝试使用 Python 中的 in 运算符的替代方案 但效果不佳 function calc fit element var
  • LeafleteachLayer函数不会迭代所有Layer

    使用 GeoJSON 数据数组创建一些标记 getJSON GetLocationsServlet function data L geoJSON data onEachFeature onEachFeature addTo mymap G
  • 使用javascript动态更新css内容

    需要将 css 更新为动态值 我不确定最好的方法是什么 div style zoom 1 div 缩放级别将根据窗口大小调整触发 应用程序将相应缩放 我将此应用程序加载到 cordova 中并让它在 iPAD 中运行 然后我意识到需要使用
  • $resource.query 返回分割字符串(字符数组)而不是字符串

    我正在使用像下面这样的 Angular resource angular module app factory data function resource var Con resource api data update method P
  • Highcharts jQuery 渲染问题 - 所有浏览器

    我在尝试使用构建堆积柱形图时遇到了一个奇怪的问题高图表 http www highcharts com 当图表呈现时 在您调整浏览器大小之前 不会显示列无论如何 导致图表重绘 我认为 图表的其余部分显示 轴 标题等 但不显示列本身 我在 I
  • 有没有办法使用 ko.observableArray 作为地图?

    有没有办法使用ko observableArray http knockoutjs com documentation observableArrays html像地图 字典一样 例如 var arr ko observableArray
  • 在 iOS 7 Safari 中,如何区分通过边缘滑动与后退/前进按钮的 popstate 事件?

    在 iOS 7 Safari 中 现在有两种后退 前进导航方式 使用底部的传统后退 前进按钮箭头或从屏幕边缘滑动 我正在使用动画在 ajax 应用程序中的页面之间进行转换 但如果用户通过边缘滑动进行导航 我不想触发该转换 因为这本身就是一个
  • 滚动顶部不符合预期

    Note 由于上次忘记奖励而重新开放赏金 A Woff 大师已经给出答案 我想在用户展开某一行时到达该行 这样当最后一个可见行展开时 用户不必向下滚动即可查看内容 I used example tbody on click td green
  • 仅当显式选择行时才关闭 ui-bootstrap typeahead

    我创建了这个jsBin http jsbin com livuqafe 2 edit来证明我遇到的问题 如果您转到此处 请尝试输入 五 并继续 你的自然反应是输入 五 然后按 Tab 如果你想要 五百 你可以向下箭头一次 但是 在这种情况下
  • 没有输入的 jQuery 日期选择器

    我有一个相当复杂的网络应用程序 我想向其中添加一些日期选择 UI 我遇到的问题是我无法从文档中弄清楚如何真正控制日期选择器的出现方式和时间 不涉及任何表单元素 不 我不会添加秘密表单字段 因此简单的开箱即用方法根本行不通 我希望有人可以提供

随机推荐

  • Java 8stream.collect(...groupingBy(...mapping(...reducing))) 减少 BinaryOperator 的使用

    我使用了一个解决方案groupingBy mapping and reducing对于以下问题 在 Java 8 中以对象字段作为对象流中的键 值 优雅地创建映射 https stackoverflow com questions 4296
  • jqGrid 在 IE7 中加载子网格时出现问题

    我一直在努力获得 网格作为子网格 http trirand com blog jqgrid jqgrid html t14 功能正在工作 但运气不佳 我认为我在代码中做错了什么 因为它在独立测试中工作正常 但是 我终于注意到了only我的应
  • 需要 Android 活动等待获取 GPS 位置

    对不起我的英语不好 我正在尝试从 GPS 获取单个位置以添加全局变量纬度 经度 GPS 打开 但在从 GPS 检索数据之前活动仍在继续 换句话说 我的需求 仅当找到位置并且填充了经度和纬度变量时 方法 getCurrentLocation
  • 您可以通过在表中指定数据库名称来 DROP TABLE IF EXISTS 吗?

    我正在尝试使用以下查询语句删除数据库中的表 mysql query DROP TABLE IF EXISTS dbName tableName or die mysql error 但我不断收到错误 有谁知道指定 dbName tableN
  • gdb 中漂亮的打印 Fortran 动态类型

    在 gdb 中打印 Fortran 可分配多态变量的值是非常痛苦的 给出下面的程序 为了看到alloc ext 我必须执行以下操作 gdb p alloc ext 1 data 0x606260 vptr 0x400ce0 lt foo M
  • 跨浏览器 JavaScript 输入实时更改/粘贴检测

    有没有跨浏览器方式检测输入字段的实时更改 By live 我的意思是当字段失去焦点时 而不是在下一个按键时 等等 立即或类似的事情 使用 jQuery 和 change keyup bind paste 等等我可以开始实时变化检测一些浏览器
  • 如何列出iOS中uiviewcontroller中的所有子视图?

    我想列出一个中的所有子视图UIViewController 我试过self view subviews 但并没有列出所有的子视图 例如UITableViewCell没有找到 任何想法 您必须递归迭代子视图 void listSubviews
  • Ruby 参数签名中的尾随逗号

    我很好奇 Ruby 中的块中是否有尾随逗号 例如 1 2 3 4 collect x x returns 1 3 就好像第一个参数后面有一个可选参数 However proc x x arity returns 1 如果 arity 为 1
  • 同一表单组的 JQuery 验证和 Bootstrap 3

    我有一个关于 has error 类和复杂对象的问题 基本上对于单个简单类型它工作得很好 但对于复杂对象则不然 我有以下代码 我的验证 public static MvcHtmlString ValidationErrorFor
  • ggplot2 - 用上标注释文本

    我想在我的绘图中添加 R 2 值 我将标签传递给 geom text 如下所示 geom text aes x y label caption parse T data frame x 2 y 80 caption R 2 0 43 但它绘
  • 正则表达式匹配无限数量的选项

    我希望能够解析像这样的文件路径 var www index htm html php shtml 放入有序数组中 array htm html php shtml 然后生成一个替代方案列表 var www index htm var www
  • 从 WCF 中的抽象类继承而不公开该类

    我想在 WCF 中将各种类公开为复杂类型 因此我根据需要在这些类型和属性上添加 DataContract 和 DataMember 属性 但是 如果我想让它们从抽象基类继承 例如 Person 从抽象 EntityBase 继承 我会收到一
  • 具有自己的交互的自定义​​标记视图

    我正在尝试创建自己的问题视图 我发现了以下内容tutorial http www eclipse tips com how to guides 14 creating a custom marker view一切正常 但是有没有可能添加自己
  • 我可以将可变切片引用重新分配给其自身的子切片吗?

    我正在实现一个类似堆栈的结构 其中该结构保存对切片的可变引用 struct StackLike lt a X gt data a mut X 我希望能够从该堆栈中弹出最后一个元素 例如 impl lt a X gt StackLike lt
  • 我可以使用 pip install 为其他用户安装模块吗?

    我希望安装 Numpywww data用户 但我无法使用该用户登录login 我怎样才能使www data让我们使用 Numpy 模块 澄清 Numpy 可用于 root 和我的默认用户 Running pip with sudo应该为所有
  • Google Maps API:由于鼠标悬停事件,信息窗口自动闪烁/关闭

    我正在为我正在进行的一个漂亮的新项目创建多边形 每当您将鼠标悬停在 infoWindow 上时 就会出现问题 多边形上的 mouseout 事件会触发 我不希望触发 mouseout 事件 除非鼠标移动到多边形和信息窗口之外 有任何想法吗
  • 拖动并滚动角度

    hello what i want to do in my project is when i moove the rectangle on left or right i scroll on my line as shown in the
  • 如何更新 tkinter 中 matplotlib 图中的 x 限制

    我使用 TKinter 制作了一个 GUI 可以从安捷伦示波器读取示波器轨迹 我希望 x 轴在更改时间 格时更新 更新我使用的 x 和 y 数据set xdata and set ydata 是否有类似的方法来更新 x 限制 您需要了解一些
  • 如何在 iOS 和 OS X 之间创建单一共享框架

    我正在尝试创建一个框架来保存在 iOS 和 OS X 上运行的应用程序的通用实体类 目前我只是将文件包含在每个目标中 但这需要更改数据模型 以便从当前目标获取类 因为在 Swift 中 您必须在模型文件中指定具有该类的模块 这当然意味着我有
  • 与 Electron 相比,Chrome 应用程序有哪些优缺点?

    我想用 javascript 使用网络技术 编写一个桌面应用程序 并寻找 Electron 和 Chrome 应用程序之间的比较 我需要的一切似乎都可以通过 Chrome Apps 实现 但是 Electron NW js 周围有很大的宣传