first commit

This commit is contained in:
编码猿
2024-09-27 02:06:13 +08:00
commit 852d94fbb9
36760 changed files with 3274413 additions and 0 deletions

View File

@@ -0,0 +1,144 @@
【进程通讯:】
渲染进程: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属性。如果使用<a>触发对话框,可以直接将静态模块框的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下放——————
<script>if (typeof module === 'object') {window.jQuery = window.$ = module.exports;};</script>
解决1:动态计算最大宽度(推拽对话框 边距动态计算 on resiae事件)
解决2:气泡 增加一个background 赋值 添加到content style样式上去 div宽高100%继承父容器否则占不满
1h33解决3:震动 前端按钮点击 web发送给服务器 服务器转发给其他人,渲染进程收到消息通知各个主进程,主进程操控窗口抖动