再小的个体,也有大大的能量,上一篇从Haskell讲到函数式的精髓:“大事化小,小事化无”,问题总是有的,解决之道,就是从这些小小的集合中,蕴含着。
官网的FAQ:
https://electronjs.org/docs/faq
二进制文件在asar包中无法访问:
构建时需要在package.json文件中写上"asar":false,原因是electron打包时二进制文件在asar包中无法访问,如果上述设置无法解决,就只能硬编码,Mac规则如下:app.asar存在就直接引用,如果app.asar不存在,将路径替换成app.asar.unpacked,如果这个也不存在,需要根据不同的操作系统进行硬编码。
打包之后如何查看main进程中的日志:
可以通过/Applications/DingTalk\ Develper\ Tools.app/Contents/MacOS/DingTalk\ Develper\ Tools 来启动应用,至少能在主进程中将日志打印在终端里,有助于调试定位问题。
项目中不要引用无协议URL:
比如iconfont站给的iconfont引用的URL都是 //xxx ,由于打包之后协议会变成app://会造成iconfont无法显示,所以编写时,一定要写上协议如http://或https://。
理解ipc通信:
在开发的过程中,一定要理解“主进程”和“渲染进程”的概念,并且对ipc通信的方案了解清楚。因为如果想在两个“渲染进程”来处理共享的数据,这个时候就需要在主进程中持有,根据通信来共享,这很有用。
如何打包:
使用electron-builder或electron-packager,一般都有两种方式,全局或局部。全局的话就按照正常的Node.js全局模块安装即可,局部稍微写两行代码。
webview的使用:
全屏时需要设置width:100%,height:100%,这个必须依赖父容器。
缓存目录下载的问题:
electron与Node.js的一些缓存目录~/.electron-gyp ~/.electron ~/.node-gyp ~/AppData/Roaming/npm-cache/_prebuilds。如果下载某些文件死活下载不下来,那么只能通过其他方法下载下来然后放到对应的缓存目录。
编译C++的问题:
如果需要指定编译C++模块,那么可以使用node-gyp rebuild --target=1.7.6 --arch=x64 --dist-url=https://atom.io/download/electron编译成指定的模块
墙的问题:
有条件的上SS吧,没有条件的换国内淘宝的源,这个没办法解决,很多情况下都是因为墙,下载不来完整的代码而导致的各种错误。
渲染进程开发的问题:
在渲染进程中基本的开发体验和你在浏览器中是保持一致的,但是由于Node.js环境的问题,可能在某些模块上会有差异,这个部分关注官方的FAQ就能解决。如果你使用的React,基本上就像开发Web应用一样,没有什么多少其他的问题存在,最多是注意打包路径的问题。
关于应用图标的问题:
图标需要在BrowserWindow中声明路径,但是三大平台的图标格式是不一样,Mac需要.icns,Windows需要.ico,Linux需要.png,这需要自己处理。