0%

electron使用总结

帮人做个简单的文件整理程序,尝试用electron来实现,总结一下。

主进程和渲染进程

electron的程序运行时,分为主进程和渲染进程。主进程即为var app = require('app');所在一侧,也是程序的入口。通过BrowserWindow实例loadUrl访问网页时,会创建出渲染进程。

某些包是只有主进程才能包含的,如常用的dialog。想在渲染进程的逻辑中调用这些包,有两个方法,一个是使用remote包,如:

var remote = require('remote');
var dialog = remote.require('dialog');

另一个方法是使用ipc,即进程通信,发消息给主进程,由主进程调用后,把结果再通过ipc返回渲染进程。

打包

electron-packager打包生成各平台的程序,还是很方便的,但是有些坑。

速度慢

对某个平台第一次打包的时候,packager需要下载对应的electron包,那速度真是慢啊!

幸好淘宝有electron镜像。通过设置ELECTRON_MIRROR环境变量,可以大大加快速度。

ELECTRON_MIRROR=http://npm.taobao.org/mirrors/electron/ electron-packager ...

体积大

electron打包出来的程序,一般至少100M,对于一个小程序来说有点太大了,体积问题感觉是很多跨平台工具的通病。

为了减少体积,记得使用packager的ignore参数,排除掉例如electron等程序运行不必要的包,如果指定了packager的输出路径在程序的目录,记得也排除掉,不然会越打包越大。

最后我使用的打包命令如下:

electron-packager . <程序名字> --platform=win32,darwin --arch=all --version=0.33.7 --out=dist/ --overwrite --ignore=node_modules/electron-* --ignore=node_modules/.bin --ignore=.git --ignore=dist --prune

把命令写在package.jsonscripts里,比如package命令,则打包时运行:

ELECTRON_MIRROR=http://npm.taobao.org/mirrors/electron/ npm run package

electron一些资源

用得还不够深入,之后遇到更多问题再补充。