帮人做个简单的文件整理程序,尝试用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.json
的scripts
里,比如package
命令,则打包时运行:
ELECTRON_MIRROR=http://npm.taobao.org/mirrors/electron/ npm run package
electron一些资源
用得还不够深入,之后遇到更多问题再补充。