electron踩坑以及与远端页面交互

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了electron踩坑以及与远端页面交互相关的知识,希望对你有一定的参考价值。

参考技术A 1、尝试在远端网页直接require('electron')报以下错误

Electron的一个主要特性就是能在渲染进程中运行Node.js,html或者vue项目不能直接require('electron')

想要壳与网页分离,并且达成交互,需要双向定义事件,而 electron只需在壳中 引 用

2、创建浏览器窗口

3、预加载文件方式:

这里预加载文件可以通过 new BrowserWindow中的preload,也可以

加载远程URL

3、electron与远端网页交互

4、sandbox  沙盒选项

5、 sandbox 模式下,文件之间相互调用 (如:preload.js中访问config.js对象)不能直接require,调用方式如下:

方式1:

方式2:

Electron踩坑记录

心血来潮想做一个PC端应用,就来学学Electron,以下为学习Electron时的踩坑记录。

安装

在国内安装electron的时候,可能会因为网络原因遇到卡在Building fresh packages...(yarn)或者是卡在node install.js(npm)这一步上。

在项目的根目录下创建.yarnrc.npmrc然后输入如下内容更改各依赖的源,即可解决该问题。

registry "https://registry.npm.taobao.org"

sass_binary_site "https://npm.taobao.org/mirrors/node-sass/"
phantomjs_cdnurl "http://cnpmjs.org/downloads"
electron_mirror "https://npm.taobao.org/mirrors/electron/"
sqlite3_binary_host_mirror "https://foxgis.oss-cn-shanghai.aliyuncs.com/"
profiler_binary_host_mirror "https://npm.taobao.org/mirrors/node-inspector/"
chromedriver_cdnurl "https://cdn.npm.taobao.org/dist/chromedriver"

C++包rebuild

使用electron就避不开要使用一些第三方的C++包,使用这些包的时候需要根据node和electron的版本重新编译。

手动rebuild

手动编译要根据electron的版本设置target,然后再根据node的版本设置对应的abi值,(详见对应表

$ npm rebuild --runtime=electron --target=6.0.12 --disturl=https://atom.io/download/atom-shell --abi=72

使用electron-rebuild

yarn add electron-rebuild -D # or npm install electron-rebuild --save-dev

下载后使用npx electron-rebuild即可重新编译,有时候会因为网络原因构建时下载依赖失败,因此可以通过-d=http://npm.taobao.org/mirrors/atom-shell切换为淘宝镜像(好久没更新了)

注意:Windows环境下安装electron-rebuild需要先安装windows-build-tools

打包

electron常用的打包工具有两个electron-builderelectron-forge,我使用的是社区活跃度较高的electron-builder,electron打包时会下载一些必要的依赖,因此和安装依赖、rebuild具有同样的问题——网络问题,因此需要更改下载地址,从淘宝镜像下载

ELECTRON_BUILDER_BINARIES_MIRROR=https://npm.taobao.org/mirrors/electron-builder-binaries/

不过我改完镜像打包依然是显示网络超时,因此我选择了手动添加nsis和winCodeSign

从淘宝镜像中分别下载所需要版本的nsis和winCodeSign,解压后将nsis的整个文件夹放到C:UsersadminAppDataLocalelectron-builderCache sis中,将winCodeSign的整个文件夹放到C:UsersadminAppDataLocalelectron-builderCachewinCodeSign中,即可成功打包。

白屏问题

简单解决

  • 在ready-to-show的时候再显示
  • 设置窗口底色
win = new BrowerWindow({
    width: 600,
    height: 300,
    webPreferences: {
        nodeIntegration: true
    },
    show: false,
    background: ‘#2e2c29‘,
});

win.on(‘ready-to-show‘, () => {
    win.show();
});

使用占位图

以上是关于electron踩坑以及与远端页面交互的主要内容,如果未能解决你的问题,请参考以下文章

electrical/electronic manufacturing company list - Unimicron

兴达易控MPI转光纤模块应用-300PLC与远端3公里外地上位机MPI通信

vue+electron开发踩坑记录

electron下载/打包慢?解决办法.....

OpenWRT - WEB界面开发思路和基本方法

vue+electron开发踩坑记录