【进程通讯:】 渲染进程:ipcrenderer从渲染进程到主进程的异步通信 先调用 在使用方法 const { ipcrenderer } = require('electron') 渲染进程: 发送消息 ipcrenderer.send(“A”,参数) ipcrenderer.on 主进程: ipcmain.send 监听消息 回调 ipcmain.on("A",(event,参数) => {}) 两者名称A 一定要一样 【ws 和 socket.io 发送和监听的区别】 【ws】 ws.send(发送) ws.onmessage = function (e) {监听}//缺点:消息分为不同消息 但所有返回结果都统一放在onmessage里面处理。 【socket.io】emit————on:由node.js提供 (websocket 心跳 + 断线重连) socket.emit(发送 名字 + 值)//事件触发 提交一次 socket.on(监听 名字)//事件监听 就可以监听无数次 socket.join(userId) 添加客户端到room房间内,并且执行可选择的回调函数。 socket.to().emit()(除开自己)向房间里所有成员推送消息 io.in().emit()(除开自己)通知房间里所有成员 【position】 .setPosition(x,y)设定窗口位置 登良页面逻辑:登陆页面的数据要进行保存{对象保存以群为单位和聊天记录保存},如果是数组的话,需要下标,并且还要遍历。 【其他零散知识点合集:】 窗口大小是否可调——————————resizable: false(默认true) 保存数据到本地——————————localStorage.setItem(JSON.stringify(转字符串)) 从本地取出数据——————————localStorage.getItem(JSON.parse(转对象)) 取消默认菜单——————————Menu.setApplicationMenu(null) 使用对话框—————————— data-toggle属性声明该按钮或链接点击后会显示或隐藏的对话框; data-target属性指明静态对话框的ID属性。如果使用触发对话框,可以直接将静态模块框的ID写在href属性内,data-target属性则可以忽略。 检测一个属性是否是对象的自有属性——————————JS hasOwnProperty() 【css知识点集合:】 弹性盒子竖向排列——————————display: flex; flex-direction: column; justify-content:——————flex-end;从行尾位置开始排列 order: 2;设置弹性盒对象元素的顺序:值越小越靠前 鼠标指针样式(小手)——————cursor: pointer; 强制性换行(不用保持单词完整性)——————word-break: break-all; 强制性换行(保持单词完整性)——————word-wrap:break-word; 默认自动换行(但不包括没有空格的字符或字母或数字)——————white-space:normal; 不换行——————white-space:nowrap; 最大宽度——————max-width: calc(100vw - 274px); 指定元素内容是否可编辑——————contenteditable; 设置元素周围的轮廓————————outline: none; 设置一个元素的垂直对齐方式————————vertical-align:属性值有很多; 阻止默认事件:e.preventDefault(); 【jq方法合集:】 jQuery里面不需要做循环,直接.方法即可 追加到目标内容————————.append() 设置或返回被选元素的属性值————————.attr(属性名称,属性值) 单个就是修改一个值,传对象同时修改多个值 获取(设置)文本框中的值————————.val() input事件绑定————————.bind(绑定) off(清除) 键盘事件————————keydown - 键按下的过程 keypress - 键被按下 keyup - 键被松开 event.which 属性返回指定事件上哪个键盘键或鼠标按钮被按下(keyCode) 返回被选元素的所有同级元素————————.siblings() 即除开本身之外的其他同级兄弟姐妹 返回带有被选元素的指定索引号的元素————————.eq() 即返回指定元素的下标 类名的添加和删除————————.addClass("active") .removeClass() 添加文本————————.text($(this).text()) 解释:$()转为jq获取对象 鼠标指针悬停————————.hover() 要运行两个方法,并且方法触发 mouseenter 和 mouseleave 事件 生成被选元素副本————————.clone() 因为jq追加内容,会在原件里面删除被追加内容 html里面 无法使用node.js的解决办法: ————在主进程打开以下配置———— //网页功能设置 webPreferences: { //是否启用node.js nodeIntegration: true, //是否在web工作器中启用node集成 nodeIntegrationInWorker: true, //是否独立js环境中运行electron api和指定的preload脚本 contextIsolation: false } ————————node.js和jq冲突解决方案: 将此行代码放在jq下放—————— 解决1:动态计算最大宽度(推拽对话框 边距动态计算 on resiae事件) 解决2:气泡 增加一个background 赋值 添加到content style样式上去 div宽高100%继承父容器否则占不满 1h33解决3:震动 前端按钮点击 web发送给服务器 服务器转发给其他人,渲染进程收到消息通知各个主进程,主进程操控窗口抖动