问题标签 [electron]
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.
node-webkit - Node-Webkit vs Electron
我们正计划构建跨平台桌面应用程序。我们发现Node-Webkit对我们来说是一个完美的选择。但是 GitHub 开发了自己的称为Electron的框架,而不是使用 Node-Webkit。
它们之间有什么区别?
html - NW.js、Brackets-Shell 和 Electron 之间的功能区别是什么?
现在 TideSDK 实际上已经死了,我一直在寻找替代的“包装器”来将 HTML/CSS/JS 应用程序作为独立的桌面应用程序运行。到目前为止,我遇到的三个可行选项是NW.js(以前称为 node-webkit)、brackets-shell和Electron(以前称为 atom-shell)。
问题在于,在功能集、兼容性等方面,这三者之间似乎没有足够完整的比较。我希望将其转变为关于(客观)差异的或多或少的规范线程三者,特别是关于:
- 平台支持;操作系统、依赖项等
- 语言特性支持,就 HTML5、CSS3 和 JavaScript 而言。想一想“HTML5 视频是否有效,如果可以,有哪些编解码器可用?”
- 非标准的额外功能,例如托盘图标、弹出通知和操作系统渲染的菜单栏。
- 可扩展性;例如。能够“插入”本机代码、与 Node.js 对话等。
- 建筑; 特别是影响开发人员日常使用的架构差异。
- 调试;包括开发工具,与常用工具的兼容性
node-inspector
等。 - ... 等等。
作为应用程序开发人员,在他们之间做出选择时,重要的客观、技术差异是什么?
javascript - 使用 Electron (Atom Shell) 时的客户端/服务器模型是什么?
我试图了解Electron(以前称为 Atom Shell)的工作原理。
我来自传统的 MVC 风格的 Web 应用程序,其中浏览器通过路由系统调用控制器操作,然后控制器从存储(文件系统、数据库等)获取数据并呈现视图,将其发送回浏览器。一些操作可能会返回 JSON,因为它们是通过 JavaScript/AJAX 调用的,而不是浏览器实际导航到它们。
我想创建它,但作为跨平台桌面应用程序。我知道 Atom Shell 结合了 Chromium-Browser 和 Node.js/v8 运行时,但我不确定它们将如何通信。
我想我可以在 Web 服务器上运行一个完整的服务器(基本上是一些 Node.js HTTP 中间件,比如Express),但这会创建一个网络可访问的服务器(这也可能会触发防火墙)——这也是我想要制作桌面的原因之一app 正是为了避免运行真正的服务器。基本上就像“普通”桌面应用程序中的 MVP/MVVM 模式。
有人可以给我一些我正在尝试做的事情的起点吗?浏览器将如何与节点运行时(他们称之为“客户端”?)进行对话以告诉它“嘿,获取我的 ID 为 12345 的记录”,客户端会返回呈现的 HTML,还是浏览器只会得到一个 blob JSON 返回并通过 JavaScript 模板引擎呈现?
macos - 在 atom-shell 应用程序启动时隐藏光标
有没有人设法创建一个基于 atom-shell 的 kiosk 式应用程序,在启动时隐藏鼠标光标?该应用程序应在登录时自动启动。
纯 JS/CSS 似乎并没有削减它,所以现在我正在使用 Cursorcerer 和 Applescript 进行讨厌的黑客攻击。
有什么线索吗?
javascript - bluebird - 承诺链返回意外的“真实”值
我正在使用 ReactJs编写一个atom-shell应用程序。因此我写了2 simple node.js-modules
. 第一个获取 XML api 并返回一个对象数组。第二个是一个简单的数据存储,它应该保存获取的数据集。两个模块都是异步的,使用bluebird
.
现在我有以下情况:
我的问题是要理解,为什么除了第 3步之外,一切都解决了,true
而不是arrays with values
?在纯节点中测试库时,一切都很好。但同样在第二次运行中,当 store 保存数据时,promise 解析为true
...
更新:
store.write
reactjs - 有没有办法在原生 CommonJS 环境中使用 JSX?
我正在一个对模块具有原生CommonJS支持的环境中启动一个新项目——它是一个 atom-shell 项目,不可能使用诸如 Browserify 或 webpack AFAIK 之类的预编译步骤。require
我可以在 myapp.jsx
上声明的入口点文件上使用 JSX index.html
,这是因为JSXTransformer
之前声明过:
我希望能够对在我的app.jsx
模块中作为 CommonJS 模块导入的子模块使用 JSX 语法:
据我了解,我将被迫放弃 JSX 语法,并为通过require
. 在这种情况下是否有任何替代方法可以继续使用 JSX?
windows - 如何以编程方式更改 Windows 可执行文件和 Mac 应用程序的图标?
在分发基于node-webkit或Atom Shell的独立应用程序时,我们实际上只是分发框架二进制文件,但我们的应用程序内容位于子目录中。
我们当然可以将可执行文件重命名为我们的应用程序的名称,但我们也可以更改图标(最好从命令行自动发布工作流程)?
electron - 如何理解 atom-shell 的浏览器端与客户端
像node.js一样,atom-shell有浏览器端和客户端的区别,但是解释很不清楚(https://github.com/atom/atom-shell/blob/master/docs/api/概要.md )。这怎么理解?
javascript - HTML5 应用程序的在线/离线版本如何访问相同的 LocalStorage?
关于 HTML5 LocalStorage 的一个经常提到的好处(例如,这里,这里)是对离线应用程序的支持。但是,同源策略让我认为 foo.com 上的应用程序不会看到与用户下载应用程序的 HTML 文件并将浏览器指向本地驱动器上的这些文件时相同的 LocalStorage。(同源策略也限制从 file:// URLs 加载的应用程序)。
我的问题:
- 我的网络应用程序必须读/写 LocalStorage并且可以离线使用,仍然读/写相同的 LocalStorage。支持应用清单的正确方法是什么?即,如果我使用应用程序清单,当用户在离线时尝试访问 foo.com 时,我认为他/她将获得缓存版本,但域仍将视为用户在线。那正确吗?
- 我假设如果我使用Atom shell之类的包装器创建本地应用程序,这将不起作用。即,同源策略将意味着用户将无法访问我的应用程序的包装版本中的相同 LocalStorage,就像他们从浏览器中访问的那样。那正确吗?
javascript - 打开带有 URL 的 iframe,然后运行一些 JS
我正在使用 Atom Shell 构建一个应用程序,并且我正在尝试打开一个可以加载 PDF 文件的 iframe,然后,一旦 PDF 文件完全加载,从该 iframe 的范围内运行一些 JS(我是愿意跑Browser->Print (https://github.com/atom/atom-shell/blob/master/docs/api/browser-window.md#browserwindowprintoptions)
。
那可能吗?如果是这样,怎么做?