Electron 扩展库
自动下载 Electron 的功能仅供测试不保证下载地址不会失效,
软件请自带 Electron,适用版本请参考 electron.runtime。
因 Electron 升级接口改动太大,暂无计划支持 Electron 后续版本。
建议改用基于 WebView2 的标准库: web.view
WebView2 为公用的系统组件,接口简洁、分发方便、功能强大,
并可自动更新,拥有良好的向下兼容性
创建 Electron 嵌入进程,
注意主进程的控制台输出需要在 aardio 中调用 console.open 打开控制台才能查看,并且必须开启控制台的 UTF-8 模式,
可选在参数 @4中指定 true,以通知aardio在开发环境下自动打开控制台
创建 Electron 嵌入进程,所有参数可选
参数@1 可选用控件对象指定宿主窗口。
参数 @electronPath 指定electron.exe的路径,
不指定则自动下载安装 Electron 运行时
创建electron嵌入进程,所有参数可选
参数@1指定窗口标题
electron最近启用的远程调试端口
创建chrome.app时指定的父窗口
允许写入 Access-Control-Allow-Headers 响应头的站点地址。
此属性必须为 null、字符串,或者指定为一个表对象,
表的键为允许跨域调用的站点地址,值必须为 true
站点地址应使用 https://host 格式,且结尾不要有斜杠,
新的浏览器已经禁止在非 HTTPS 协议下调用本机地址,
而老版浏览器则反之
自定义 Access-Control-Request-Private-Network 响应头的值,
默认为 "true",可改为 null
electron主进程所在目录,可指定为asar文件路径,
该值不指定时默认为"/electron.app",
该目录为默认值"/electron.app"时,发布EXE时可自动打包为asar - 可选嵌入EXE文件
ElectronAppObject.callback("/*调用survey发起调查指定的方法名字*/",function(hSocket,result,err){
})
electron.exe 路径
electron进程ID
electron启动线程ID
关闭主窗口
在electron中执行javascript代码,忽略返回,
在js参数后可选指定多个字符串格式化参数用于调用string.form格式化代码,
参数@1指定客户端套接字句柄,
RPC服务端远程回调函数名首字符为$时,
第一个回调$参数即为当前客户端套接字句柄,
除非熟悉getActiveSocket函数导致的潜在问题,请不要省略$参数
在electron主进程中执行javascript代码,忽略返回值,
在js参数后可选指定多个字符串格式化参数用于调用string.form格式化代码
electron.exe 所在的目录
electron.exe 路径
ElectronAppObject.external = {
/*可以在这里指定允许electron访问的对象和函数
在electron使用const aardio = require('aardio')导入此对象
必须在调用start函数以前设置此对象才能生效
注意electron.app已经默认提供了部分导出函数
例如发送标题栏命令必须使用预定义的hitCaption等函数*/
}
在参数中指定electron.exe 所在目录下的相对路径,
此函数转换为完整路径
获取RPC服务端当前活动套接字句柄
,任何触发消息处理、异步套接字处理程序的代码都有可能改变这个函数的返回值
任何时候都不推荐使用此函数
更好的替代方案是在RPC函数名前添加$字符,用于通知aardio在回调参数中添加$参数
回调$参数可以稳定可靠的获取当前套接字
将资源文件路径转换为HTTP服务端网址
可选使用些属性直接指定启动页面的代码
代码会被自动存于indexUrl指定的文件地址
aardio创建的HTTP服务器
ElectronAppObject.httpHandler["/test.js" ] = function(response,request){
/*自定义HTTP处理程序
键为请求的路径,值为处理函数或者HTML代码*/
}
electron窗口句柄
ElectronAppObject.indexReady(
function($){
/*如果加载startEnviron.indexUrl已完成,
并且页面上的DOM内容、aardio模块都已准备就绪,
将立即执行在此注册的回调函数,
可重复添加回调,并保证按添加的前后顺序调用且仅调用一次
参数 $ 为触发此事件的网页RPC客户端套接字句柄*/
}
)
ElectronAppObject.jsMain = /**
const aardio = require('aardio');
const app = require('electron').app;
/* aardio-electron 主进程已准备就绪,win是已创建的主窗口(BrowserWindow对象) */
aardio.ready( win => {
if( !aardio.studioInvoke ){
win.setMenu( null )
}
win.on('closed', () => {
})
} )
/* 全部窗口已关闭, 退出electron进程 */
app.on('window-all-closed', () => {
app.quit();
})
**/
弹出对话框
参数@1指定显示的数据,如果是表对象先序列化为文本,
其他对象调用tostring转换为文本
此函数调用win.msgbox,但设定父窗口为当前chrome窗体
弹出对话框
参数@1指定显示的数据,如果是表对象先序列化为文本,
其他对象调用tostring转换为文本
此函数调用win.msgbox,但设定父窗口为当前chrome窗体
弹出错误对话框
参数@1指定显示的数据,如果是表对象先序列化为文本,
其他对象调用tostring转换为文本
此函数调用win.msgbox,但设定父窗口为当前chrome窗体
弹出错误对话框
参数@1指定显示的数据,如果是表对象先序列化为文本,
其他对象调用tostring转换为文本
此函数调用win.msgbox,但设定父窗口为当前chrome窗体
弹出询问对话框
参数@1指定显示的数据,如果是表对象先序列化为文本,
其他对象调用tostring转换为文本
此函数调用win.msgbox,但设定父窗口为当前chrome窗体
应用程序名,只能使用英文字母、连字符、下划线
在调用start函数之前指定才会生效
调用start函数时会将此目录添加到NodeJs搜索模块路径,
此目录不用指定保持默认值即可,aardio会自动在此目录下添加ws.asar
调用指定electron函数,但不需要客户端回调反馈,
参数@1指定客户端套接字句柄,
RPC服务端远程回调函数名首字符为$时,
第一个回调$参数即为当前客户端套接字句柄,
除非熟悉getActiveSocket函数导致的潜在问题,请不要省略$参数
调用electron主进程的函数,但不需要客户端回调反馈,
建议名字加上"main."前缀
ElectronAppObject.onClose = function(hSocket,err){
/*一个渲染进程断开连接触发此事件*/
}
ElectronAppObject.onError = function(hSocket,err){
errput(err,"electron/rpc error");/*自定义RPC错误处理*/
}
ElectronAppObject.onIndexLoad = function(){
/*主窗口首次加载startEnviron.indexUrl指定的首页后触发此事件*/
}
ElectronAppObject.onIndexReady = function(){
/*主窗口首次加载完成startEnviron.indexUrl指定的首页,
并且页面上的DOM内容、aardio模块都已准备就绪*/
}
ElectronAppObject.onQuit = function(){
..win.quitMessage();/*Electron主进程断开连接触发此事件*/
}
ElectronAppObject.onReady = function(){
/*electron已创建主窗口
node.js主进程内aardio/electron交互接口已准备就绪*/
}
ElectronAppObject.onUrlReady = function(hSocket,url){
/*页面加载完成并且页面上的DOM内容、aardio模块都已准备就绪*/
}
electron进程对象
主动向所有客户端发送通知
method指定客户端方法名,
可添加任意个调用参数
ElectronAppObject.ready(
function(hwndChrome){
/*保证在electron主窗口准备就绪后立即执行此回调函数
可重复添加此回调,并保证按添加的前后顺序调用*/
}
)
指定远程调试端口
如果指定为0,则自动分配1025以后的空闲端口
此属性启动后更新为实际开始的调试端口号
注意开启远程调试端口以后,
不应再在electron中调用win.webContents.openDevTools启动调试工具
这2个会冲突导致一些不正常
aardio创建的JSON-RPC服务端
返回对象:websocketjsonserverObject
指定嵌入服务器的监听IP
默认值为 "127.0.0.1",仅限本机可以访问
如果希望外网可以访问,可以赋值为null即可
在调用start函数以前指定此属性才有效
指定嵌入服务器的监听端口
建议保持默认值null
不指定端口可以随机分配空闲端口,不会出现端口冲突的问题
在调用start函数以前指定此属性才有效
显示或隐藏主窗口,
参数可以省略,也可指定为false,true用于控制显示状态,
也可以使用_SW_前缀的常量等
启动electron主进程,
省略参数自动指定默认值,indexUrl默认指定为"./index.html"
indexUrl参数的首字符为"."表示electron主进程目录下的相对路径
ElectronAppObject.start("/*可选直接在这里指定一个启动网址启动electron*/")
ElectronAppObject.start({
/*指定首页地址,必须指定*/
indexUrl = "/res/index.aardio";
/*创建窗口参数,可以不指定*/
browserWindow = {
width = 800;
height = 600;
};
/*启动参数,可以不指定*/
args = {
};
})
调用start函数启动electron主进程,
然后调用 win.loopMessage 函数并返回该函数的返回值,
参数用法请参考start函数
发起调查任务,
调用所有客户端的同名函数,
method指定客户端方法名,
可添加任意个调用参数
请使用callback函数指定调查结束后客户端回调的函数
窗口默认标题
aardio创建的WebSocket服务器
调用electron函数,
参数@1指定客户端套接字句柄,
RPC服务端远程回调函数名首字符为$时,第一个回调$参数即为当前客户端套接字句柄,
除非熟悉getActiveSocket函数导致的潜在问题,请不要省略$参数
在electron的js代码使用 aardio.on("method")
添加允许aardio调用的js回调函数.
可选使用callback函数指定一个同名回调函数按收本次调用electron的返回值
调用electron主进程的函数,建议名字加上"main."前缀,
在electron主进程中js代码使用 aardio.on("main.method")
添加允许aardio调用的js回调函数.
可选使用callback函数指定一个同名回调函数按收本次调用electron的返回值
调用start函数时指定的启动参数
在调用start启动electron以后再修改此参数对electron是不起作用的
electron打开的首页地址
WebSocket/RPC服务器地址