Tag: 电子

在Electron应用程序中pipe理应用程序设置

我很想知道如何在Electron应用程序中pipe理应用程序设置 ? 我在这里发现了一些优秀的资源(例如, 在Electron(Atom Shell)应用程序中存储用户设置的地方)和其他地方,当涉及到pipe理用户设置但是找不到与pipe理应用程序设置相关的任何事情时。 对我来说,两者之间的区别在于应用程序设置可能因环境而异(开发/testing/生产),但对于应用程序的所有用户而言将保持不变。 他们将包含像API端点等东西。另一方面,用户设置会根据用户的喜好,如窗口宽度/高度等,从用户到用户。 我到目前为止做了什么? 我发现这个优秀的包称为config并开始在我的项目中使用它。 根据说明,我创build了一个config文件夹和一个默认的configuration文件(稍后我将创build特定于环境的configuration文件)。 只要我正在开发应用程序,它工作正常。 应用程序正在从config文件夹中正确地获取default.json文件,并正确应用这些设置。 当我打包应用程序(MSI,DMG等)时出现问题。 我正在使用electron-builder包。 config包的问题在于它在应用程序的当前工作目录中查找config文件夹,并且因为在安装应用程序的文件夹中找不到它,所以只会引发错误。 我什至试图手动复制这个文件夹在我的app文件夹(这是电子生成器使包),但也没有帮助。 理想情况下,我想要在应用程序的ASAR文件中捆绑应用程序设置,以便它不能被反编译。 我的问题是: 人们如何pipe理Electron应用程序的应用程序设置? 可以config NPM包用于那个? 或者是否有专门用于Electron应用程序的替代scheme?

为什么Node.js等待从child_process.spawn发布STDOUTstream数据?

我刚开始着眼于在Electron中构build应用程序,所以如果我以不恰当的方式使用这个问题中的单词构造,我会提前道歉。 在学习的同时,我只是试图将从过去创build的IRC bot收集的所有STDOUT数据发送到应用程序中的div元素。 index.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Bot World!</title> </head> <body> <h1>Bot World!</h1> <button type="button" id="bot_button">Run Bot</button> <p id="output"></p> </body> <script> document.getElementById('bot_button').addEventListener("click", function (e) { var spawn = require('child_process').spawn; var child = spawn('ruby' , ['/home/syncthetic/Projects/Box/bots/hackthissite']); child.stdout.on('data', function(data) { console.log('stdout: ' + String(data)); document.getElementById('bot_button').innerHTML += String(data) + '</b>'; }); child.stderr.on('data', function(data) { console.log('stdout: […]

将EventEmitter移到debugging器中的侦听器

Node有一个类EventEmitter ,它是node.js和电子编程的一个非常常见的东西。 不幸的是,它是一个PITA来debugging。 想象一下这样的代码 import EventEmitter from `events`; const emitter = new EventEmitter(); emitter.on('foobar', handleFoobar); emitter.emit('foobar', 'foo', 'bar'); function handleFoobar(..args) { console.log(…args); } 现在我想在debugging器中逐步完成代码。 当然,在这个小例子中,我可以在handleFoobar上放置一个断点,但是在真正的代码中,我只是希望能够遍历代码,当我得到一些someEmitter.emit我希望能够沿着“步入听众“ 。 不幸的是没有这样的function存在AFAIK。 EventEmitter的实现相当复杂,因此join到听众需要步进约20-25次。 你可以在所有的出口点设置断点,但是至less有6个断点,当你想把它们全部打开/closures的时候也是很烦人的。 有没有其他创造性的解决scheme来有效地实现像“步入监听器”的东西,当someEmitter.emit线? 想到一个解决scheme就是用简单的实现来replaceevents.js 。 没有域支持和使用ES6function,它可能是更小的实现像 EventEmitter.prototype.emit(type, …args) { const listeners = this._listeners[type].slice(); listeners.forEach(listener => { listener(…args); } return listeners > 0; } 我想我也可以修补到原型如果process.env.NODE_ENV === 'development' 还有其他更通用的解决scheme吗? 就像也许是一个debugging器function,我可以select代码,永远不会直接进入,但在debugging器中select进入它的出口点?

如何跟踪电子拖动BrowserWindow?

我有一个BrowserWindow的实例。 我想知道当窗口被拖动/移动在屏幕上。 我已经尝试使用移动的事件,但该事件仅在窗口移动后被触发。 当窗口被拖动时它不会被触发。 如何跟踪窗口被拖动的时间?

隐藏Electron.io程序窗口

我在Electron上开发了一个Node.js应用程序,这样它就可以由不使用命令行的人来分发和运行。 该应用程序不需要一个接口,只需要执行。 有没有办法隐藏电子窗口,所以应用程序可以坐在托盘,可以打开/退出?

来自electron的globalShortcut将禁用原始按键

我试图拦截Ctrl + C和Ctrl + V命令并从Electron中的剪贴板获取值。 我试着用电子的GlobalShortcut做 const ret = globalShortcut.register('CommandOrControl+X', () => { console.log('CommandOrControl+X is pressed') }) 这是拦截键事件,但它阻止原始键事件发生。一种方法是拦截使用上面的代码,然后手动执行键事件。 任何人都可以请帮助我在这种情况下可以做什么?

在电子,什么是最好的方式来做Ajax请求?

我使用电子来创build一个桌面应用程序,现在我需要从一些远程API获取数据。 我可以在Renderer进程中使用fetch或Reqwest之类的东西吗?或者使用主进程上的任何http npm包(如Request),并使用Electron的IPC来来回转换数据。 那么最好的办法是什么?

在ReactJS中打印

如何在我的应用程序组件中打印(打印)DIV? 我有一个DIV =(badgeContainer)里面我已经添加了几个形状,文本和图像,现在我想打印在DIV =(badgeContainer)里面的元素。 有没有一个能够帮助我做出反应的包? 任何帮助深表感谢。

在电子引用节点模块?

我是最近来自Flex / Actionscript / AIR世界的难民,并且非常喜欢与Electron,Node合作,并开始理解一些使用Javascript的惯例。 问题:我一直在使用下面的方法来引用我已经在项目中安装的模块。 它的工作,但我怀疑我是“做错了” – 主要是因为在简单的“npm install …”方法后,我必须挖掘node_modules的内容,find我刚刚安装的内容,然后构build它的path。 我在这里错过了什么? <script src="../node_modules/video.js/dist/video.min.js"></script>

Uncaught TypeError:this.method不是一个函数 – Node js class export

我是新的node.js,我想要一个类。 我已经使用https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Classes作为参考。 但是,当我这样做,例如: // talker.js class Talker { talk(msg) { console.log(this.say(msg)) var t = setTimeout(this.talk, 5000, 'hello again'); } say(msg) { return msg } } export default Talker // app.js import Talker from './taker.js' const talker = new Talker() talker.talk('hello') 我得到: talker.js:4 Uncaught TypeError:this.say不是一个函数 应该说,app.js是electron.js渲染器进程,它使用rollup.js 任何想法,为什么这将是? 更新:对不起,我忘了添加在伪代码中添加一行。 实际上,当我用callback调用setTimeout时会发生这种情况。 我已经更新了代码。