Files
ClassContent/历届学生/font-end-nine/项目练习/学生项目/张婷/练习/聊天室/知识点.txt
2024-09-27 02:06:13 +08:00

145 lines
5.5 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

【进程通讯:】
渲染进程: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发送给服务器 服务器转发给其他人,渲染进程收到消息通知各个主进程,主进程操控窗口抖动