electron

Electron初步【02】--第一个Electron App

目录结构与文件Electron App的目录结构如下:your-app/├── package.json├── main.js└── index.html其中的package.json和Node Modules里表现的一样,而main.js则是启动你App的脚本,它将会开启主进程。package.json的一个例子:{"name" : "your-app","vers

Electron指南 - 快速入门

快速入门Electron提供了丰富的本地(操作系统)的API,使你能够使用纯JavaScript来创建桌面应用程序。与其它各种的Node.js运行时不同的是Electron专注于桌面应用程序而不是Web服务器。这并不意味着Electron是一个绑定图形用户界面(GUI)的JavaScript库。取而代之的是,Electron使用Web页面作为它的图形界面,所以你也可以将它看

俄罗斯方块游戏自动机

《用electron制作俄罗斯方块游戏》 后续文章,智能程序玩俄罗斯方块游戏。背景前不久用ES6完成了基本的俄罗斯方块游戏,今天已经完成了一个初步的智能算法,可以自动玩俄罗斯方块了,让自己的想法朝实现更近了一步。效果图第一次运行,消除了1398行,窃喜!最高记录3676行。程序结构主要关注智能算法,结构简单化,全部放在了index.js中。用定时器驱动游戏function

feWorkflow - 使用 electron, react, redu, immutable 构建桌面 App

15年初创建了适用于目前团队的gulp工作流,旨在以一个gulpfile来操作和执行所有文件结构。随着项目依赖滚雪球式的增长,拉取npm包成了配置中最麻烦而极容易出错的一项。为了解决配置过程中遇到的种种问题,15年底草草实现了一个方案,用nw.js(基于Chromium和node.js的app执行工具)框架来编写了一个简单的桌面应用gulp-ui, 所做的操作是打包gulp

Electron指南 - 调试主进程

调试主进程浏览器窗口的DevTools只能调试渲染进程的脚本(比如Web页面)。为了提供一种方法来调试主进程中的脚本,Electron提供了 --debug 以及 --debug-brk 的选项开关。命令行开关使用下列命令行切换到调试Electron的主进程模式:--debug=[port]这个开关将使得Electron使用V8调试协议侦听在指定端口上。默认侦听端口是585

ElectronOCR:基于Electron+React+Tesseract的MACOS下的OCR工具

Github Repo 地址文章地址MAXOS Darwin x64下载笔者一直在MacOS上没找到太顺心的OCR工具,导致看书的时候很多东西只能手打,略烦。正好前段时间用了Tesseract,就用Electron封装了一个,这里简要记述下开发当中的一些坑和要点,日后有空把Electron整理好也出个系列Introduction这东西,大概是这个样子:在渲染进程中引入本地模

Electron入门介绍

Github 系列文章地址笔者前两天心血来潮做了个MACOS下可以进行OCR图文识别的小工具,发现Electron 在1.x之后API发生了挺大的变化,估计也是我好久没碰了,所以打算把这些系列整理下扔出来,有兴趣的也可以关注笔者的ElectronOCR这个实践项目,自认为还是有点用的,不过貌似没啥人喜欢。IntroductionElectron 可以让你使用纯 JavaSc

在 Electron 中使用模块热替换

Electron + React + Webpack 这个组合开发桌面应用还是挺爽的。如果再搭上 Webpack 的 Hot Module Replacement 那简直完美,不用刷新就搞定。关于 HMR 的演示可以看 Dan Abramov 的演讲视频 Hot Reloading with Time Travel。在 Electron 中使用 HMR 碰到的问题是打开的文

用 Electron 打造跨平台前端 App

前言现如今,用 HTML、JavaScript、CSS、Node.js 写桌面应用早已不是什么新鲜的事了,作为一名前端,能够使用自己熟悉的语言,快速实现自己想要的桌面应用,是件很让人兴奋的事。目前常见的有 NW、heX、Electron。今天,就来简单的上手一下 Electron。Electron 是什么?Electron 是一款可以利用 Web技术 开发跨平台桌面应用的框

Electron 填坑之旅

关于的 height、width需要外面包裹一层:handleResize(e) { this.setState({ width: window.innerWidth, height: window.innerHeight });}componentDidMount() { window.addEventListener('resize', this.handl